【问题标题】:Unable to upload file in headless Chrome无法在无头 Chrome 中上传文件
【发布时间】:2018-12-30 23:19:09
【问题描述】:

我将 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: //*[@id="formUpload"]/p[1]/label (用 500 尝试了 30 秒 毫秒间隔)

在 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] /标签"}

【问题讨论】:

  • 错误是因为 //*[@id="formUpload"]/p[1]/label , xpath 。你能分享提到的xpath的HTML代码吗?由于 iframe 可以引发 NoSuchElement。检查是否涉及任何 iframe。
  • @cruisepandey :是的,该页面上有 iframe。 <label class="forFileInput" for="fileUpA" multiple="">Choose a file!</label> 该字段位于<fieldset> 内。

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


【解决方案1】:

尝试添加以下 Chrome 选项:

options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");

它使无头执行更快。

From this issue.

【讨论】:

  • 这里的问题是,它无法在无头模式下找到 UI 元素。
  • 我遇到了类似的问题。在无头模式下,每个等待条件都会超时(或者比正常模式下的时间长 5 倍)。使用这些选项,元素将加载更快,并且 selenium 将能够定位元素。
【解决方案2】:

根据您的回复,您必须切换到 框架 才能与其中的元素进行交互。

driver.switchTo().frame(driver.findElement(By.id("frame id "))); 

// 你与 iframe 中元素的交互

使用完 iframe 后,切换到 默认内容 总是一个好习惯。

driver.switchTo().defaultContent();

【讨论】:

  • 此字段集不在 iframe 内。 iframe 仅包含两个脚本。
  • 你要交互的元素在iframe里吧?
  • 不,它在 iframe 之外。
  • 你能分享一下 iframe 之外的按钮的 HTML 代码吗?
  • 它只是一个字段,当点击文件浏览器对话框时会自动打开。我之前分享过:<label class="forFileInput" for="fileUpA" multiple="">Choose a file!</label>
猜你喜欢
  • 2020-09-12
  • 2020-04-16
  • 2016-08-22
  • 1970-01-01
  • 2014-09-09
  • 2016-02-17
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多