Selenium 无法在headless Chrome中上载文件

Selenium 无法在headless Chrome中上载文件,selenium,selenium-webdriver,selenium-chromedriver,google-chrome-headless,Selenium,Selenium Webdriver,Selenium Chromedriver,Google Chrome Headless,我在Chrome67上使用WebDriver 3.12.0和ChromeDriver 2.40。我初始化驱动程序变量如下: driver = new ChromeDriver(new ChromeOptions().setExperimentalOption("prefs", prefs).addArguments("--start-maximized").setHeadless(true)); 当我在headless模式下执行它时,我得到这一行的TimeoutException。在正常模式下

我在Chrome67上使用WebDriver 3.12.0和ChromeDriver 2.40。我初始化驱动程序变量如下:

driver = new ChromeDriver(new ChromeOptions().setExperimentalOption("prefs", prefs).addArguments("--start-maximized").setHeadless(true));
当我在headless模式下执行它时,我得到这一行的
TimeoutException
。在正常模式下执行时,它工作正常

wait.until(ExpectedConditions.presenceOfElementLocated(mainPage.labelForInputFileField));
错误消息:

org.openqa.selenium.TimeoutException:预期条件失败: 正在等待位于以下位置的元素:by.xpath: //*[@id=“formUpload”]/p[1]/label(尝试30秒,共500次) 毫秒间隔)

在 org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:80) 在 org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:265) 原因:org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:”//*[@id=“formUpload”]/p[1]/label”}


根据您的回答,您必须切换到框架以与框架内的元素进行交互

driver.switchTo().frame(driver.findElement(By.id("frame id "))); 
//您与iframe中的元素的交互

然后,使用iframe后,切换到默认内容始终是一个好的做法

driver.switchTo().defaultContent();

根据您的回答,您必须切换到框架以与框架内的元素进行交互

driver.switchTo().frame(driver.findElement(By.id("frame id "))); 
//您与iframe中的元素的交互

然后,使用iframe后,切换到默认内容始终是一个好的做法

driver.switchTo().defaultContent();

尝试添加以下Chrome选项:

options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");
它使无头执行更快


.

尝试添加以下Chrome选项:

options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");
它使无头执行更快


.

错误是因为/*[@id=“formUpload”]/p[1]/label,xpath。您可以共享上述xpath的HTML代码吗。由于iframe,无法提升任何接触元素。检查是否涉及任何iframe。@cruisepandey:是的,该页面上有iframe<代码>选择一个文件此字段位于
中。错误是因为/*[@id=“formUpload”]/p[1]/label,xpath。您可以共享上述xpath的HTML代码吗。由于iframe,无法提升任何接触元素。检查是否涉及任何iframe。@cruisepandey:是的,该页面上有iframe<代码>选择一个文件此字段位于
内。此字段集不在iframe内。Iframe只包含两个脚本。您要交互的元素在Iframe中,对吗?不,它在Iframe之外。您可以共享Iframe之外的按钮的HTML代码吗?它只是一个字段,单击时,会自动打开文件浏览器对话框。我之前分享过:
选择一个文件此字段集不在iframe内。Iframe只包含两个脚本。您要交互的元素在Iframe中,对吗?不,它在Iframe之外。您可以共享Iframe之外的按钮的HTML代码吗?它只是一个字段,单击时,会自动打开文件浏览器对话框。我之前分享过:
选择一个文件这里的问题是,它无法在headless模式下找到UI元素。我也有类似的问题。在无头模式下,每个等待条件都会超时(或比正常模式长5倍)。有了这些选项,元素的加载速度将更快,selenium将能够定位元素。这里的问题是,它无法在headless模式下找到UI元素。我也有类似的问题。在无头模式下,每个等待条件都会超时(或比正常模式长5倍)。有了这些选项,元素将加载得更快,selenium将能够定位元素。