element.getAttribute('value') returns 量角器中为空

element.getAttribute('value') returns null in Protractor

element.getAttribute('value') returns 在量角器中为空,尽管在源代码中存在值详细信息。

下面是我的代码,

console.log(等待this.textArea.getAttribute('value'));

Source code image

我阅读了有关同一问题的其他帖子,但这些帖子已经过时,没有适合我的解决方案。我还尝试使用 browser.actions().click(element).sendKeys('input').perform(); 输入输入考虑到它可能是 sendKeys() API 问题,但仍然没有运气。

并且相同的代码“element.getAttribute('value')”在 2021 年 6 月 1 日之前一直运行良好,但突然返回空值,不确定是否有任何代码更改或编译器版本需要有更新吗?

从今天开始,它正在发生在我们身上。 element.getAttribute 适用于属性“type”,但不适用于“value”和其他一些属性,如“outerHTML”等。我们的代码也是稳定的代码(2021 年 2 月左右冻结)。

我们可以通过在 chrome 选项中添加 w3c:false 来解决这个问题。

这不是问题的答案,但发现了最新 Chrome 版本 91.0.4472.77element.getAttribute('value') 方法存在问题的根本原因。它还给出了完整日历 angular 组件 https://github.com/fullcalendar/fullcalendar/issues/6343

的问题

我能够 运行 我在 Microsoft Edge 版本 91.0.864.37 浏览器上的测试

此修复的预计到达时间是多少?顺便说一下,以下解决方案有效:

第 1 步:卸载当前 chrome 版本 91.0.4472.101

第 2 步:下载 chrome 版本 90.0.4430.72 并安装它

Step2a: Download chrome from here >> https://www.filepuma.com/download/google_chrome_64bit_90.0.4430.72-28425/
Step2b: Disable chrome auto update by delete the file (GoogleUpdate.exe) from this path: C:\Program Files (x86)\Google\Update

Step3:删除当前所有chrome驱动包 一种。从此路径删除所有 chrome 个文件:C:\Users\admin\AppData\Roaming\npm\node_modules\protractor\node_modules\webdriver-manager\selenium

第 4 步:在 cmd

中通过 运行 命令降级 chrome 驱动程序包

webdriver-manager 更新 --versions.chrome 90.0.4430.24

已解决

我在 mac

上找到了一个适用于 chrome 91.0.4472.114 的临时解决方法

这里描述的问题实际上是 chrome 驱动程序 https://bugs.chromium.org/p/chromium/issues/detail?id=1205107 中的一个错误,所以它不仅仅是 Protractor 问题

正在处理中,您可以使用chrome驱动程序版本 90。奇迹般有效。最新版本在这里 https://chromedriver.storage.googleapis.com/LATEST_RELEASE_90.0.4430

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

来降级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. 转到 google chrome 并打开开发者工具

  2. 使用 CSS 识别元素并在您的开发者控制台中获取元素的值,如下所示。

    $("input[data-bind *='selectedParentKpi']")[0].value

3.Get 来自量角器的数据,使用 javascript

 browser.executeScript("return $(\"input[data-bind *='selectedParentKpi']\")[0].value").then(function (data1){
    cb();
})

您不需要降级。有些答案很接近,但您可以像这样传入一个量角器元素。

const value = await browser.executeScript("return arguments[0].value", myElement);