昨天更新到Chrome浏览器版本76.0.3809.87,并将我的Chrome驱动程序更新到版本76.0.3809.68之后,我们在使用FindElements
,FindElementByXPath
和{ {1}}个方法。更新前未发生此问题。抛出的异常是:
未知错误:脚本返回意外结果。
目前,我的项目在500-600个网站上实现了自动化,而到目前为止,我们仅在3个网站上遇到此问题:
这些站点中的每个站点都是由同一家公司构建的,因此代码具有可比性。使用FindElement
方法时,不会引发此异常。您提供给该方法的XPath似乎也无关紧要,每次都会引发异常。我尝试用新的硒安装程序创建一个新项目,结果是相同的。
我确定这与Chrome驱动程序更新有关,与我搜索但找不到的FindElementById
的实际实现有关。我的猜测是,它在后端使用了一些JavaScript,与网站的配合不好。
我没有尝试使用其他驱动程序重现此问题。鉴于我们的一些项目限制,目前我们只能使用Chrome驱动程序。
搜索此问题不会产生任何结果,因为这是一个新问题。搜索异常消息只会产生关于错误使用FindElements
的事情,(我认为)与我的问题无关。
有人知道会在网站上引起什么吗?或者,如果有已知的解决方法?在提交有关此问题的帮助票之前,只想确保我没有做任何导致此问题的特定操作即可。
ExecuteScript
使用上面的代码时,try
{
var driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://billing.clarksvillegw.com/iwr/user/login.seam");
var success = driver.FindElementsById("login:usernamedec:username").Any();
var failure = driver.FindElementsByXPath("//*[@id='login:usernamedec:username']").Any();
}
catch (Exception)
{
throw;
}
的计算正确,但是在尝试计算success
时,代码将引发异常。
答案 0 :(得分:7)
在我们的测试自动化服务器上将Chrome浏览器和ChromeDriver升级到76.0.3809.87,并在ruby上运行Selenium-Webdriver和Appium之后,我遇到了完全相同的错误。
在使用行/列引用调用表对象(即)时,已经缩小了导致问题的原因,并最终从以下方法中返回了错误。
`execute_script("arguments[0].scrollIntoView({block: 'center'});", self.sales_table_element[ref][@ref_col])`
`def row_items
meth = strategy == :descendants ? :trs : :rows
@row_items ||= element.send(meth).map do |obj|
::PageObject::Elements::TableRow.new(obj)
end
end`
解决方法::将Chrome-Driver降级为75.0.3770.140可以解决我的问题
这是从现在开始的临时解决方案。希望这个问题能很快得到永久解决!
更新:将ChromeDriver和Chrome浏览器都升级到77.0.3865.40可解决此问题。 -另请参见https://chromedriver.storage.googleapis.com/77.0.3865.40/notes.txt
答案 1 :(得分:1)
here中描述了此问题,当受测页面使用prototypejs v1.6.1时会重现该问题。
对应的错误here(现已关闭),应于下周(2019年8月26日之后)发布到新版本的chromedrivers v76,v77中。仅供参考:chromedrivers的当前版本为:76.0.3809.68和77.0.3865.10
使用以前的驱动程序版本应该可以使用,对于chromedriver v75,您应该只警告“未测试当前版本”。但是对于v74,您需要使用--disable-build-check
答案 2 :(得分:-1)
使用以前的chromedriver(75.0.3770.140)对我不起作用。有人还有其他解决方案吗?