C# Chrome驱动程序在FindElement调用上引发脚本结果错误
在昨天更新到Chrome浏览器版本76.0.3809.87并将我的Chrome驱动程序更新到版本76.0.3809.68之后,我们在使用C# Chrome驱动程序在FindElement调用上引发脚本结果错误,c#,selenium,selenium-chromedriver,C#,Selenium,Selenium Chromedriver,在昨天更新到Chrome浏览器版本76.0.3809.87并将我的Chrome驱动程序更新到版本76.0.3809.68之后,我们在使用FindElement、findelementbytxpath和FindElement方法时,在一组网站上遇到了奇怪的异常。更新前未发生此问题。引发的异常是: 未知错误:脚本返回意外结果 目前,我的项目自动化了大约500-600个网站,我们只在3个网站上遇到了这个问题(到目前为止): https://billing.clarksvillegw.com/iwr/
FindElement
、findelementbytxpath
和FindElement
方法时,在一组网站上遇到了奇怪的异常。更新前未发生此问题。引发的异常是:
未知错误:脚本返回意外结果
目前,我的项目自动化了大约500-600个网站,我们只在3个网站上遇到了这个问题(到目前为止):
- https://billing.clarksvillegw.com/iwr/user/login.seam
- https://mwsonline.nashville.gov/iwr/user/login.seam
- https://webconnect.greensboro-nc.gov/iwr/user/login.seam
FindElementById
方法时,不会引发此异常。您为该方法提供什么XPath似乎也无关紧要,每次都会抛出异常。我尝试过用新的selenium安装创建一个新项目,结果是一样的
我确信这与Chrome驱动程序更新有关,也与我搜索过但找不到的FindElements
的实际实现有关。我的猜测是,它在后端使用了一些javascript,这对网站来说不是很好
我没有试图与其他驱动程序重现此问题。考虑到我们的一些项目限制,我们目前只能使用Chrome驱动程序
搜索此问题不会产生任何结果,因为这是一个新问题。搜索异常消息只会导致错误地使用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;
}
当使用上面的代码时,
成功
计算正确,但当试图计算失败
时,代码抛出异常。在我们的测试自动化服务器上,运行Selenium Webdriver和ruby上的Appium,将Chrome浏览器和ChromeDriver升级到76.0.3809.87后,我遇到了完全相同的错误
已经缩小了问题的原因,并最终从下面的方法中得到了返回的错误-当使用行/列引用调用表对象时,即
`execute_script("arguments[0].scrollIntoView({block: 'center'});", self.sales_table_element[ref][@ref_col])`
解决方法:降级Chrome驱动程序,为我解决问题
这是从现在开始的临时解决办法。希望这个问题尽快得到永久解决
更新:将ChromeDriver和Chrome brower升级到77.0.3865.40,解决了此问题。-另请参见,使用先前的chromedriver(75.0.3770.140)对我不起作用。还有其他解决方案吗?当测试页面使用prototypejs v1.6.1时,会描述并复制此问题 相应的bug(现已关闭)应在下周(2019年8月26日之后)发布到chromedrivers v76、v77的新版本中。仅供参考:chromedrivers的当前版本为:76.0.3809.68和77.0.3865.10
使用以前的驱动程序版本应该可以工作,使用chromedriver v75,您应该只有“当前版本未测试”的警告。但对于v74,您需要启动带有的驱动程序。感谢您的帮助,我们也看到了76的一个错误,并且正在尝试这样做:实际上,我还没有找到与Chrome 75匹配的二进制文件的链接。你知道我们在哪里可以找到吗?嗨,jywarren,我上面的解决方案是只将ChromeDriver降级到75.0.3770.140。Chrome浏览器仍在76.0.3809.87上运行,我们已经将ChromeDriver升级到77.0.3865.40,它肯定解决了这个问题——在Chrome浏览器上运行匹配版本。看这里-
`def row_items
meth = strategy == :descendants ? :trs : :rows
@row_items ||= element.send(meth).map do |obj|
::PageObject::Elements::TableRow.new(obj)
end
end`