这真的很奇怪。试过雅虎,现在是Outlook。我正在运行硒测试,该测试从我正在测试的应用程序发送电子邮件。我想通过检查收到的正确电子邮件来断言测试。一旦发送了电子邮件,我就开始第二个chrome驱动程序实例并打开我设置的测试电子邮件帐户(Yahoo / Outlook),登录,接收电子邮件,做一些断言,测试通过。
然而,一旦我尝试在无头模式下运行测试,它就像Outlook的版本不同,因此找不到元素,测试失败。无头运行,工作正常。它使用相同版本的镀铬,镀铬驱动程序和相同的镀铬配置文件。我可以通过让我的代码截取故障截图来看到outlook网页看起来不同,所以即使我在无头运行时我也可以看到事情失败的地方。
以前有没有人经历过这样的问题,如果有的话,我如何修复它?它现在在做我的瑞典。
答案 0 :(得分:0)
看来,至少对于Outlook,Microsoft正在测试您使用的浏览器。至少这就是我所面对的。当您在Selenium中使用chromedriver的“ headless”选项时,就像您所做的那样,由于得到的页面不同。 我通过设置ChromeDriver的用户代理来解决此问题:
System.setProperty("webdriver.chrome.driver", prop.getProperty("driver.path"));
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("headless");
chromeOptions.addArguments("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36");
ChromeDriver driver = new ChromeDriver(chromeOptions);