Chromedriver 78可能存在问题,Selenium找不到在Chrome中打开的PDF的Web元素

在我的谷歌浏览器没有更新到版本78之前,我的代码工作正常。我还将chromedriver更新到版本78.0.3904.70。所以我再也无法使用Selenium WebDriver和Java找到id='plugin'的WebElement:

<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&amp;reanudar=&amp;>
</div>
</html>

除了这部分,我的测试工作正常。我以前从未遇到过类似的问题。我也试图找到WebElement id='content',但我收到同样的错误。

WebDriverWait wait = new WebDriverWait (driver, 90);
WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin")));

scrollvalid.sendKeys(Keys.PAGE_DOWN);                       scrollvalid.sendKeys(Keys.PAGE_DOWN);

我的自动化脚本应该找到PDF元素并向下滚动页面。相反,我收到这个错误:org.openqa.selenium.TimeoutException:在90秒后超时,等待 By.id:插件找到的元素的可见性

有人面临类似的问题吗?提前致谢。


答案 1

我遇到了同样的问题。

显然,Chrome会自动更新。昨天(2019年10月29日)我的ChromeDriver开始抱怨它与Chrome 78不兼容。我将驱动程序更新到78版本。我开始随机获得org.openqa.selenium.NoSuchElementException异常,当试图找到我确认的元素时。findElement[s]在我使用断点时也有效。我也尝试了隐式等待,但只有有限的成功。

我尝试了zsbappa的ChromeOption解决方案,但没有喜悦。

谷歌很难获得旧版本的Chrome,但我在 https://www.neowin.net/news/google-chrome-76-offline-installer/ 找到了版本76。请注意,联机安装程序会安装最新版本。我恢复了76的司机,一切都很好。我所有的硒测试都再次工作.

我的结论是,Chrome 78及其关联的驱动程序具有竞争条件,其中Selenium试图在网页完成之前对其进行查询。


答案 2

我们在Chrome 78.0.3904.7,Chromedriver 77/78,Python Selenium 3.141.0中也遇到了类似的问题。

在我们的自动化Python Selenium测试中,我们看到了多个失败,其中似乎没有发生对元素的点击。更奇怪的是,该元素似乎已变为活动状态(就好像它即将被单击一样),但实际的单击事件从未发生过。因此,不会发生页面切换等,从而导致各种下游故障。

通过跟踪和错误的过程,我们发现使用标准的.click()函数现在不可靠:

webdriver_element.click()

但是使用操作链似乎确实是可靠的:

ActionChains(context.browser).click(webdriver_element).perform()

目前尚不清楚为什么会这样。当我们升级到Chrome 78.0.3904.7时,故障就开始了。我们使用的是Chromedriver 77.0.3865.90,但相同的测试在Chrome 77.x版本上可靠地通过,因此在Chrome 78中似乎有问题或已更改。


推荐