我正在使用Selenium grid 40和在Windows 7中运行的Firefox远程驱动程序。我也使用C#API。我想知道如何在无头Firefox浏览器上设置设备宽度。设备宽度小于ipads max width,这会导致它获取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,然后重新启动计算机,但它不起作用。
答案 0 :(得分:0)
我不知道如何使用硒来设置设备宽度,但是我想出了如何使用远程帧缓冲区来设置设备宽度。对我来说,这是Xvbf。启动服务时输入屏幕分辨率。
以下是Xvfb服务的示例,其分辨率为1024x768,深度为24。 https://gist.github.com/dloman/931d65cbb79b00593ac3dd5d0cdf37d9
答案 1 :(得分:-1)
我的经验仅限于使用Selenium的Python实现,所以这可能不适合你,但在执行driver.get()操作之前你可以使用driver.set_window_size(width,height)来加载所需的页面。
关键是您执行这些操作的顺序:您希望告诉selenium在加载页面之前更改浏览器的维度,因为否则您将模拟与调整大小相同的行为初始页面加载后的浏览器窗口。您可能知道,在调整浏览器窗口大小时,某些“响应”窗口需要重新加载页面。要激活的功能。