输入元素上不存在值属性 | 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 个解决方法:
- 您可以使用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
模式下执行 运行 命令。记在心里
- 而不是
elem.getAttribute('value')
尝试使用 browser.executeScript('return arguments[0].value', elem);
多个用户声称它适用于他们
此外,请阅读这个提出更多 hacky 解决方案的答案
将 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 个解决方法:
- 您可以使用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
模式下执行 运行 命令。记在心里
- 而不是
elem.getAttribute('value')
尝试使用browser.executeScript('return arguments[0].value', elem);
多个用户声称它适用于他们
此外,请阅读这个提出更多 hacky 解决方案的答案