我将WebDriver 3.12.0和ChromeDriver 2.40与Chrome 67配合使用。我初始化了驱动程序变量,如下所示:
driver = new ChromeDriver(new ChromeOptions().setExperimentalOption("prefs", prefs).addArguments("--start-maximized").setHeadless(true));
以无头模式执行该行时,我得到TimeoutException
。当我在正常模式下执行它时,它工作正常。
wait.until(ExpectedConditions.presenceOfElementLocated(mainPage.labelForInputFileField));
错误消息:
org.openqa.selenium.TimeoutException:预期条件失败: 等待元素位于:By.xpath: // * [@@ =“ =” UpUpload“] / p [1] / label(使用500尝试了30秒 MILLISECONDS间隔)
在org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:80) 在 org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:265) 由以下原因引起:org.openqa.selenium.NoSuchElementException:否这样的元素:无法找到元素:{“ method”:“ xpath”,“ selector”:“ // * [@ id =” formUpload“] / p [1] / label“}
答案 0 :(得分:1)
As per your response, you will have to switch to the frame to interact with elements which are inside of it.
driver.switchTo().frame(driver.findElement(By.id("frame id ")));
// your interaction with element inside the iframe
Then it is always a good practice to switch to default content once you are done with iframe.
driver.switchTo().defaultContent();
答案 1 :(得分:1)
尝试添加以下Chrome选项:
options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");
它使无头执行更快。