在Selenium测试中指定自定义屏幕分辨率

时间:2013-09-03 16:02:42

标签: java selenium webdriver screen-resolution

如下面的博客所述,我们可以在硒测试运行期间修改屏幕分辨率。 http://blog.testingbot.com/2013/03/15/screen-resolution-option-now-available-for-all-selenium-tests

尝试以下代码(如“https://saucelabs.com/docs/additional-config”中所述),但未设置指定的分辨率。这仍然不适用于Selenium吗?

DesiredCapabilities dc=new DesiredCapabilities();    
dc.setCapability("screen-resolution","1280x1024");

4 个答案:

答案 0 :(得分:21)

酱汁实验室!= Selenium

Sauce labs使用该功能为您提供具有所需分辨率的VM,这不是Selenium自己所知道的功能。

Selenium无法修改您的桌面分辨率!

如果您想在Selenium中修改浏览器大小以使其与特定分辨率匹配,您可以执行以下操作:

driver.manage().window().setSize(new Dimension(1024, 768))

Opera驱动程序不支持上述内容,因此您需要执行以下操作:

DesiredCapabilities capabilities = DesiredCapabilities.opera()
capabilities.setCapability("opera.arguments", "-screenwidth 1024 -screenheight 768")

虽然设置浏览器大小与设置屏幕分辨率不同,但它应该满足您的所有意图和目的。

答案 1 :(得分:4)

Selenium是一个浏览器自动化框架,它的工作是驱动浏览器,而不是自动化你的系统。我认为在Selenium中不会实现诸如设置屏幕分辨率等功能。设置分辨率与浏览器自动化无关。

我不确定您为什么要更改分辨率...如何只更改浏览器窗口的大小?如果您正在测试响应式设计页面,那么您可以这样做。

driver.manage().window().setSize(new Dimension(800, 600));

答案 2 :(得分:1)

DesiredCapabilities的目的是告诉Grid在哪里运行测试。

因此,如果远程节点使用您指定的分辨率1280x1024连接到网格,则测试将在该节点上运行。如果任何其他节点没有此分辨率,则测试将不会在这些节点上运行。

如果您未在DesiredCapabilities中指定屏幕分辨率,则测试将在具有任何分辨率的节点上运行。

Selenium的这个功能实际上并没有改变或修改测试节点的屏幕分辨率。它只告诉网格运行或不运行测试的节点。

答案 3 :(得分:0)

您感兴趣的可能最好通过本机Java代码而不是通过Selenium(一种Web浏览器测试框架)来完成。

通过Java更改分辨率的问题在StackOverflow上的另一个线程中得到了解决。

swing - Change screen resolution in Java

虽然我很好奇您为什么要这样做,但是由于您没有解释上述情况并且可能会导致社区做出更好的回应。 =)