加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

硒 – 在AngularJS之外的量角器的可用性

发布时间:2020-12-17 10:34:35 所属栏目:安全 来源:网络整理
导读:所以我最近从使用AngularJS切换到ReactJS,但我确实喜欢使用Protractor E2E测试运行器,所以我想知道关于Protractor的两件事. 在不使用AngularJS的网站上使用Protractor是否有任何重大问题?我知道Protractor默认尝试与Angular同步,你得到: Error: Angular co
所以我最近从使用AngularJS切换到ReactJS,但我确实喜欢使用Protractor E2E测试运行器,所以我想知道关于Protractor的两件事.

在不使用AngularJS的网站上使用Protractor是否有任何重大问题?我知道Protractor默认尝试与Angular同步,你得到:

Error: Angular could not be found on the page X : retries looking for angular exceeded

但是我相信可以通过在browser.get()之前执行browser.ignoreSynchronization = true来防止这种情况.除此之外还有其他问题吗?

另一个问题是Protractor会不会成为AngularJS特有的,因为它只能测试AngularJS代码?我认为可以绕过任何AngularJS特定功能(就像你可以使用browser.ignoreSynchronization = true),我只是想确保这是Protractor未来的核心目标.

尽管Protractor旨在为Angular应用程序编写端到端测试代码,但它仍可用于测试非Angular应用程序.

实现此目的有两种常见的解决方案:

直接访问包装的webdriver实例

browser.driver.find(By.id('test'));

为方便起见,您可以将其导出到全局命名空间并通过别名访问它.

onPrepare: function () {
  global.drv = browser.driver;
}

停止等待Angular完成其工作

如前所述,browser.ignoreSynchronization = true可以禁用Protractor的默认等待行为.您采用的解决方案(在browser.get()之前执行browser.ignoreSynchronization = true)可能会在您的测试代码不专用于非Angular应用程序时导致错误. browser.ignoreSynchronization是一个全局范围设置,这意味着一旦更改其值,此标志将影响整个测试套件.因此,除非在每个Angular测试中相应地更新标志,否则Angular测试将会出现一些错误.

尝试这种优雅而灵活的方式.

在config.js中定义ignoreSynchronization标志setter函数

onPrepare = function () {
  global.isAngularApp = function (flag) {
    return browser.ignoreSynchronization = flag;
  }
}

您可以在测试代码中确定标志的值

beforeEach(function() {
  isAngularApp(false);  //for non-Angular site
});

对于非角度应用,您现在需要自己保持同步.您可以通过采用更直观的用户方法来实现此目的,现在您可以等待元素出现/消失/具有值/没有值/等.用户可以看到并做出反应的所有事情.您可以使用Selenium的隐式或显式等待以及相应的ExpectedConditions类来完成此操作.这些是Selenium Docs的细节.

希望它对你有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读