我正在尝试使用无头铬进行硒测试并进行了以下更改:
DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("window-size=1800x1080");
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
我的测试记录到内部页面,然后等待元素可见:
selenium.waitForElementVisible("xpath=//tr/td/div[@class[contains(., 'x-grid-cell-inner')] and text()='Global Test Merchant 14']");
当我没有无头选项但是得到时,这一切都很有效:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//tr/td/div[@class[contains(., 'x-grid-cell-inner')] and text()='Global Test Merchant 14']"}
当我用--headless运行测试时。
Chrome版本:62.0.3202.89 chromeDriver:2.33.506120 Selenium版本:2.53.0 Windows 7
答案 0 :(得分:1)
我遇到了同样的问题,我的错误是因为我正在制作driver.get(“ localhost:...”)而不是driver.get(“ http://localhost:...”)
答案 1 :(得分:0)
当您看到 NoSuchElementException 时,您可以考虑使用xpath
和服务员来查看元素,如下所示:
//tr/td/div[@class='x-grid-cell-inner' and contains(., 'Global Test Merchant')]
答案 2 :(得分:0)
当我无头跑时,我遇到了类似的问题,我的项目在运行无头时继续触发NoSuchElementException并且默认浏览器检查阻碍了,尝试添加这些参数。只是一个想法
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--test-type");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--no-first-run");
chromeOptions.addArguments("--no-default-browser-check");
chromeOptions.addArguments("--ignore-certificate-errors");
chromeOptions.addArguments("--start-maximized");
答案 3 :(得分:0)
我有一个类似的问题。
我尝试了以下选项,并且对我有用。
options.addArguments("--window-size=1920,1080");
options.addArguments("--disable-extensions");
options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");
options.addArguments("--start-maximized");
options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--no-sandbox");
options.addArguments("--ignore-certificate-errors");
答案 4 :(得分:0)
在我的特殊情况下,我只需要使用这三个参数来解决同一问题:
value