C# Chrome驱动程序在FindElement调用上引发脚本结果错误

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/

在昨天更新到Chrome浏览器版本76.0.3809.87并将我的Chrome驱动程序更新到版本76.0.3809.68之后,我们在使用
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`