【问题标题】:Protractor - clicking and sendKeys not working量角器 - 单击和发送键不起作用
【发布时间】:2019-04-16 04:21:11
【问题描述】:

我正在编写量角器测试,作为测试的一部分,我希望清除特定字段的内容(在 textarea 上),然后使用 sendKeys 方法将一些内容写入该 textarea。

这是我的测试代码:

var commentField = element(by.css('input[ng-model="comment"]'));
console.log(commentField);
commentField.clear();
commentField.sendKeys('Here is a comment'); 

控制台日志确认我确实找到了一个控件,但只要它点击 clear() 方法,测试就会挂起。

您有什么想法吗?

【问题讨论】:

  • 您能否提供一个可重现的示例?另外,你使用的是什么量角器版本,它可以在 chrome 和 firefox 中重现吗?谢谢。
  • 嗨,alecse - 不幸的是,我在可以发布到 stackoverflow 的内容方面受到管理层的限制......我想我已经找到了问题 - 它看起来像浏览器同步......
  • 如果您删除 sendKeys 行,是否会清除文本字段?如果您忽略同步,则可能需要在清除字段和添加新文本之间进行某种等待。
  • 现在我忽略了同步,一切正常。,..

标签: javascript angularjs protractor


【解决方案1】:

如果页面不是角度页面,我们使用browser.ignoreSynchronization = true;。因为量角器是为角度编码的。但是,我看到了 ng 选择器:

var commentField = element(by.css('input[ng-model="comment"]'));

这个错误可能是由于其他原因:

  1. 浏览器驱动(尝试使用chromedriver)
  2. 缺乏可测试性插件。请访问此链接了解更多信息:https://www.npmjs.com/package/protractor-testability-plugin

确保您使用 jasmine2 框架,并且要更新 webdriver,请在命令行中键入:webdriver-manager update

【讨论】:

    【解决方案2】:

    只是为了让人们知道-我需要使用

    browser.ignoreSynchronization = true;
    

    在调用移动到目标页面之后,但在尝试单击、清除或编辑任何内容之前。

    快乐的日子!

    【讨论】:

      【解决方案3】:

      .clear() 存在问题,如果您不履行承诺,sendKeys() 方法将不起作用。

      尝试使用async/await 或履行承诺。

      element.clear().then(() => {
          element.sendKeys('text to send')
      })
      

      【讨论】:

        猜你喜欢
        • 2015-09-05
        • 2014-11-02
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        • 2015-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多