我使用的是Python 2.7和Selenium 2.39.0。以测试web应用程序。当我将我的测试作为Windows(7Ent.)计划任务运行时;无论用户是否登录都运行";,看起来屏幕分辨率或窗口大小发生了变化;一些按钮隐藏在浏览器窗口底部的工具栏后面,因此Selenium无法单击它。
如果我选择";仅当用户登录"时运行;;即使屏幕被锁定,按钮也是可见和可点击的。
根据Windows任务属性,它正在使用相同的用户帐户。
有没有一种方法、浏览器设置或注册表项可以帮助在两种模式下保持相同的分辨率和大小?
我知道我可以向下滚动页面,但我正在努力理解并可能防止这两种模式之间的行为差异。
我也遇到过同样的问题。我尝试了我能找到的所有注册表项,禁用了TMM,但没有用。
在用户登录的情况下运行Selenium似乎是Windows7为您提供1024x768以外的其他分辨率的唯一方法。因此,我最终这样设置了Selenium虚拟机:让用户在启动时自动登录,然后启动Selenium节点。
在硒测试中,您可以调用driver.manage().window().setSize(new Dimension(19201080));
即使你的屏幕分辨率是1024/768,你的浏览器也会有正确的窗口大小,你的按钮也会显示得很好。
您还可以使用用户"SYSTEM"运行窗口任务。因此,您不必担心打开用户会话。
如果有人来这篇文章,仍然像我一样寻找答案。
如果你使用选项将ChromeDriver设置为在无头模式下运行,无论用户是否登录,你都可以将其强制设置为你想要的分辨率。
请参阅以下内容,该内容最初由@bunkerdrive发布,用于回答此问题:
在Azure Pipelines上运行Selenium测试时,默认窗口大小是多少?
代码是C#,但我想有一个python等效程序可以添加选项。
var options = new ChromeOptions();
options.AddArguments(new List<string>()
{
"--headless",
"--disable-gpu",
"--no-first-run",
"--no-default-browser-check",
"--ignore-certificate-errors",
"--no-sandbox",
"--window-size=1920,1080",
"--start-maximized",
"--disable-dev-shm-usage",
});
driver = new ChromeDriver(options);