输入元素上不存在值属性 | AngularJS, Chrome 91、量角器

Value attribute not present on input element | AngularJS, Chrome 91, Protractor

将 chrome 驱动程序更新为 Chrome驱动程序 91.0.4472.19

value 属性已从 input 元素中消失。量角器无法访问值属性。

    let x = await xDiv.getEl("#xInput").getAttribute('value');

    // x = null

使用 Chrome 开发工具,我也无法在标记中看到任何输入元素的 value 属性。

使用 AngularJS 1.5.8 和 Protractor/Selenium 3.141.59

您描述的问题实际上是chrome驱动程序https://bugs.chromium.org/p/chromium/issues/detail?id=1205107中的错误。这是因为 chrome 浏览器发生了与 W3C 合规性相关的变化

如您所见,计划是修复错误,但仍在进行中。

同时,我向您推荐 2 个解决方法:

  1. 您可以使用chrome驱动程序版本 90。最新版本在这里 https://chromedriver.storage.googleapis.com/LATEST_RELEASE_90.0.4430

我知道在正常情况下这会引发不兼容错误,但不知何故 chrome驱动程序 90 可以与 chrome 91 一起使用。

您可以通过运行执行此命令

来降级chrome驱动程序
webdriver-manager update --gecko=false --versions.chrome 90.0.4430.24

请注意,有时您会在全局、项目本地和 Protractor 特定安装 webdriver-manager。我给出的命令将全局安装 chrome 驱动程序。为了在本地安装,您需要找到您的 webdriver-manager 的路径和 运行 这样的命令

node ./node_modules/protractor/node_modules/webdriver-manager update --gecko=false --versions.chrome 90.0.4430.24

有些人可能需要在 sudo 模式下执行 运行 命令。记在心里

  1. 而不是 elem.getAttribute('value') 尝试使用 browser.executeScript('return arguments[0].value', elem); 多个用户声称它适用于他们

此外,请阅读这个提出更多 hacky 解决方案的答案