4

我正在使用 Selenium grid 40 和在 Windows 7 中运行的 Firefox 远程驱动程序。我还使用 C# API。我想知道如何在无头 Firefox 浏览器上设置设备宽度。设备宽度小于 ipad 最大宽度,这会导致它获取 ipad 特定的 css,定义如下:

@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait) {
  /* For portrait layouts only */
}

@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape) {
  /* For landscape layouts only */
}

我已经使用以下方法更改了窗口大小:

driver.Manage().Window.Size = new System.Drawing.Size(1290,900)

但它仍然会选择那些 css 指令。

其他信息:我的网格节点是没有人实际登录的虚拟机。我远程运行 selenium 网格,这可能是设备宽度小的原因。它可能默认为 Windows 的最小分辨率。如果有办法改变它可能会帮助我,但我不知道。

更新:我尝试通过 powershell 脚本将注册表中 DefaultSettings.XResolution、DefaultSettings.YResolution 和 DefaultSettings.BitsPerPel 的所有实例设置为 1290、900 和 16,然后重新启动计算机,但它不起作用。

4

2 回答 2

0

我不知道如何使用 selenium 设置设备宽度,但我想出了如何使用远程帧缓冲区设置它。对我来说,这是 Xvbf。我在启动服务时传入屏幕分辨率。

下面是一个 Xvfb 服务示例,分辨率为 1024x768,深度为 24。 https://gist.github.com/dloman/931d65cbb79b00593ac3dd5d0cdf37d9

于 2018-11-20T19:13:04.060 回答
-1

我的经验仅限于使用 Selenium 的 Python 实现,因此这可能对您不起作用,但您可以在执行将加载所需页面的 driver.get() 操作之前使用 driver.set_window_size(width, height)。

关键是您执行这些操作的顺序:您希望在加载页面之前告诉 selenium 更改浏览器的尺寸,否则您将模拟与在初始页面加载后调整浏览器窗口大小相同的行为。您可能知道,在调整浏览器窗口大小时,需要重新加载页面才能激活某些“响应式”功能。

于 2015-02-10T16:52:39.793 回答