Men*_*ive 2 c# selenium selenium-chromedriver
在昨天更新为Chrome浏览器版本76.0.3809.87并将我的Chrome驱动程序更新为版本76.0.3809.68之后,当使用,和方法时FindElements
,我们在一组网站上遇到奇怪的异常。更新前未发生此问题。抛出的异常是:FindElementByXPath
FindElement
未知错误:脚本返回意外结果。
目前,我的项目可以在500-600个网站上实现自动化,而到目前为止,我们仅在3个网站上遇到此问题:
这些站点中的每个站点都是由同一家公司构建的,因此代码具有可比性。使用该FindElementById
方法时,不会引发此异常。您提供给该方法的XPath似乎也无关紧要,每次都会引发异常。我尝试用新的硒安装程序创建一个新项目,结果是相同的。
我确定这与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;
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码时,success
可以正确计算,但是在尝试计算failure
代码时会引发异常。
在我们的测试自动化服务器上将Chrome浏览器和ChromeDriver升级到76.0.3809.87,并在ruby上运行Selenium-Webdriver和Appium之后,出现完全相同的错误。
在使用行/列引用调用表对象时,即通过以下方法,缩小了导致问题的原因并最终从该方法返回了错误。
`execute_script("arguments[0].scrollIntoView({block: 'center'});", self.sales_table_element[ref][@ref_col])`
Run Code Online (Sandbox Code Playgroud)
`def row_items
meth = strategy == :descendants ? :trs : :rows
@row_items ||= element.send(meth).map do |obj|
::PageObject::Elements::TableRow.new(obj)
end
end`
Run Code Online (Sandbox Code Playgroud)
解决方法:将 Chrome-Driver降级到75.0.3770.140为我解决了问题
从现在开始,这是一个临时解决方案。希望这个问题能永久解决!
更新:将ChromeDriver和Chrome浏览器升级到77.0.3865.40可以解决此问题。-另请参见https://chromedriver.storage.googleapis.com/77.0.3865.40/notes.txt