自GoogleChrome77发布以来,我更新了我们的CI流程,因此无头自动化测试是通过以下方式完成的:
一个简单的代码谁完美地工作不再工作,因为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中检测到类似问题?
有什么建议吗?
这似乎是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驱动的应用程序