无法在无头Chrome中上传文件

时间:2018-07-23 13:24:05

标签: selenium selenium-webdriver selenium-chromedriver google-chrome-headless

我将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“}

2 个答案:

答案 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=*");

它使无头执行更快。

From this issue