【问题标题】:element.getAttribute('value') returns null in Protractorelement.getAttribute('value') 在量角器中返回 null
【发布时间】:2021-06-02 23:03:48
【问题描述】:

element.getAttribute('value') 在 Protractor 中返回 null,尽管在源代码中存在值详细信息。

下面是我的代码,

console.log(await this.textArea.getAttribute('value'));

Source code image

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

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

【问题讨论】:

    标签: protractor


    【解决方案1】:

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

    的问题

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

    【讨论】:

      【解决方案2】:

      已解决

      我找到了一个临时解决方法,它只适用于 mac 上的 chrome 91.0.4472.114

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

      在开发过程中,您可以使用 chromedriver 版本 90。奇迹般有效。最新版本在这里https://chromedriver.storage.googleapis.com/LATEST_RELEASE_90.0.4430

      您可以通过运行此命令来降级 chromedriver

      webdriver-manager update --gecko=false --versions.chrome 90.0.4430.24
      

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

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

      有些人可能需要在sudo 模式下运行命令。记住它

      【讨论】:

        【解决方案3】:

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

        Step1:卸载当前chrome版本91.0.4472.101

        第二步:下载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

        Step4:通过在cmd中运行以下命令来降级chrome驱动程序包

        webdriver-manager 更新 --versions.chrome 90.0.4430.24

        【讨论】:

        • 好吧,我没有在 Chrome 社区论坛上记录这个问题,因为解决方法对我有用,所以不知道 ETA,只是在等待新版本。
        【解决方案4】:

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

        我们可以通过在 chromeoptions 中添加 w3c:false 来解决此问题。

        【讨论】:

          【解决方案5】:

          我遵循了另一种解决方法。

          1. 转到谷歌浏览器并打开开发者工具

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

            $("输入[数据绑定 *='selectedParentKpi']")[0].value

          3.使用javascript从量角器获取数据

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              猜你喜欢
              • 2021-08-26
              • 2015-03-23
              • 2020-04-05
              • 2017-08-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-07-03
              相关资源
              最近更新 更多