提问者:小点点

有硒java的虫子


自GoogleChrome77发布以来,我更新了我们的CI流程,因此无头自动化测试是通过以下方式完成的:

  • 硒-java3.141.59(maven)
  • ChromeDriver 77.0.3865.40(https://chromedriver.storage.googleapis.com/77.0.3865.40/chromedriver_linux64.zip)
  • GoogleChrome77.0.3865.90(77.0.3865.90-1,通过稳定http://dl.google.com/linux/chrome/deb/主服务器检索)

一个简单的代码谁完美地工作不再工作,因为element. getAt的('id')返回null而不是字符串值的id属性的超文本标记语言元素(已发现使用By.id()!)

我在Windows和Linux(docker)上尝试了这样的配置,结果是一样的:get属性('id')返回null而不是超文本标记语言元素id

重现问题的简化代码:

String myId = "myInputTypeDateId" ;
WebElement element = (new WebDriverWait(driver, timeout)).until(ExpectedConditions.presenceOfElementLocated(By.id(id)));
String eltId = element.getAttribute("id");
// With chrome 76 & chromedriver 76: returns "myInputTypeDateId"
// With chrome 77 & chromedriver 77: returns null

附加信息:

  • 与问题相关的元素是

是否有人在Chrome/ChromeDrive 77中检测到类似问题?

有什么建议吗?


共2个答案

匿名用户

这似乎是chromeDrive和Salesforce之间的兼容性bug

ChromeDriver78解决了这个问题,但是使它与Chrome77一起工作的唯一方法似乎是将ChromeDriver76与Chrome77一起使用

我们有几个用户要求ChromeDrive 77补丁,但尚未提供

更多细节在这里:https://bugs.chromium.org/p/chromedriver/issues/detail?id=3103#c6

匿名用户

在尝试从调用getAt在()时提取id属性

>

  • 使用visibilityOfElement在()

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.id("myInputTypeDateId"))).getAttribute("id"));
    

    使用elementToBeClickable()

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("myInputTypeDateId"))).getAttribute("id"));
    

    您可以在JavaWrapper方法中找到详细的讨论,以等待元素可用于Apache Cordova Webview驱动的应用程序