Selenium 无法在headless Chrome中上载文件
我在Chrome67上使用WebDriver 3.12.0和ChromeDriver 2.40。我初始化驱动程序变量如下: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。在正常模式下
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将能够定位元素。