目前,我正在Jenkins中运行Selenium脚本。在这里,我的问题是我的浏览器窗口大小为1382x754 px分辨率。

但是在Jenkins中,浏览器的分辨率为1044x784。因此,我的脚本无法在Jenkins中使用x-path找到元素。

我尝试通过在初始化驱动程序时设置窗口大小,然后将窗口大小增加到1048x788 px,然后不再增加。

关于此问题的任何解决方法有什么建议吗?

环境:Windows 7,Jenkins版本(1.596),浏览器:Chrome

#1 楼

我和我的团队遇到了相同的问题。在我们的例子中,我们正在测试的Web应用程序具有响应视图,当浏览器窗口缩小到如此小的尺寸时(例如在Jenkins上运行时),导致选择器无效。以下是我们用来纠正此问题的步骤。请注意,我们的Jenkins实例正在安装Windows的VM上运行。

创建一个新的Jenkins节点,其启动方法为“通过Java Web Start启动代理”



在jenkins节点列表中,单击该节点标题并获取其Java Web Start启动命令。到VM,打开一个终端并运行该命令。


将jenkins作业配置为仅在该节点上运行。在作业配置页面中:



最终说明

我们选择让javaws命令在每次启动VM时运行(通过Windows Task Scheduler)
请注意我们如何不指定要作为Windows服务运行的节点。在我们的测试中,我们发现将节点作为Windows服务运行会导致分辨率问题持续存在。
此方法使用VM的分辨率强制作业直接在VM上运行。换句话说,登录虚拟机时看到的分辨率将是作业运行的分辨率。该解决方案的副作用是作业将不再在后台运行。如果您在运行自动化的情况下登录VM,您将能够看到它的作用。但找不到解决分辨率问题的方法。如果某人因此问题而到达此线程并被迫将其节点作为服务运行,则以下情况可能会对他们有所帮助(这对我们而言并非如此)。 Windows注册表项NoInteractiveServices设置为0
在Windows服务中,禁用交互式服务检测
在Windows的服务设置中,启用“允许桌面交互”


评论


根据msdn.microsoft.com/en-us/library/windows/desktop/…的说法,从Windows Vista服务开始无法与用户进行交互。

–尼尔
17年9月12日在6:45

#2 楼

我曾经遇到过类似的问题。在模式窗口上启用了滚动,因此我向下滚动然后尝试访问该元素。对我有用。

评论


谢谢@Sanchita,当我要使用xpath定位器获取元素的文本时,我的问题没有得到解决,正如您建议的bcoz。 xpath值正在更改,因此我的脚本在jenkins浏览器中失败。如果我根据jenkins浏览器更改xpath,则i9t将在本地浏览器中失败。

– QAMember
16年2月2日在10:02

我不建议。我的情况就是这样@ user246

– QAMember
16-2-19在7:51

抱歉,评论是针对Op的,我在错误的地方输入了它。

–user246
16-2-19在13:17

在开始时最大化浏览器也可能有所帮助。

– Masood ghz
16年4月4日在10:15

#3 楼

我认为您应该使用Jenkins浏览器分辨率(1044x784)提交代码,以解决Jenkins上的问题。

#4 楼

我只是简单地默认了selenium驱动程序,以打开适用于两台计算机的浏览器分辨率,甚至将xpath切换为css选择器。使我更容易找到元素。

#5 楼

在测试运行期间,设置窗口大小。

driver.manage().window().setSize(new Dimension(1044,784));


您也可以尝试使其变大,在Jenkins运行时,它也可能使窗口变大,而不是显示视口。

#6 楼

您可以尝试这样的操作:

public void clickElementJS(String path, String formName){
    String xpathValue = cfg.config(path, formName);
    element = GenericExecutors.driver.findElement(By.xpath(xpathValue));
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("arguments[0].scrollIntoView(true);",element);  
    element.click();
}


#7 楼

通过Jenkins服务执行脚本时,请解锁系统并执行测试脚本,然后可能不会调整浏览器大小。试试这个,对我们有用