当前位置: 首页 > 面试题库 >

AngularJS之外的量角器的可用性

仲孙磊
2023-03-14
问题内容

所以我最近从使用AngularJS切换到了ReactJS,但是我真的很喜欢与Protractor
E2E测试运行器合作,所以我想知道有关Protractor的两件事。

在完全不使用AngularJS的网站上使用Protractor是否有任何重大问题?我知道默认情况下,量角器会尝试与Angular同步,您会得到:

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

但是我相信可以通过browser.ignoreSynchronization = true之前做的事来避免键入信息browser.get()。除此之外还有其他问题吗?

另一个问题是,量角器是否会成为特定于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可以禁用默认的量角器等待行为。当您的测试代码不专用于非Angular应用程序时,您采用的解决方案(在browser.get()之前执行browser.ignoreSynchronization
=
true)可能会导致错误。browser.ignoreSynchronization是全局作用域设置,这意味着一旦更改其值,此标志将影响整个测试套件。因此,除非在每个Angular测试中相应地更新标志,否则您的Angular测试将获得一些错误。

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

ignoreSynchronization在config.js中定义标志设置器功能

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

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

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

对于非角度应用程序,您现在需要自己维护同步。您可以采用一种对用户更直观的方法来实现,即您现在等待元素出现/消失/具有一个值/没有任何值/等等。用户将看到并作出反应的所有事物。您可以通过Selenium的隐式或显式等待以及适当的ExpectedConditions类来完成此操作。这些是Selenium
Docs的详细信息。

希望对您有帮助。



 类似资料:
  • 我正在使用量角器为AngularJS应用程序开发一个自动化测试套件。 在开发测试脚本时,我一直使用,因此在执行脚本时,我必须手动告诉它继续执行测试的每一步。现在我很高兴我的测试能够正确执行,并且希望删除对的调用,这样我就可以让脚本自己运行到完成。 但是,我知道,我不能只删除对的调用,而不添加一些内容,允许测试在执行下一步之前暂停/等待浏览器加载(目前,在运行对的调用后,我告诉脚本继续所用的时间足以

  • 问题内容: 我想在每个描述之后(而不是在每个测试用例之后)和每个描述之前做一些事情,有没有办法做到这一点?我尝试了以下格式,但是它给我的错误是,在未定义之前和之后,是否有可能在每个描述之前和之后执行某些任务: 问题答案: 据我了解,你要和这是在介绍: 在运行describe中的所有规范之前,仅调用一次beforeAll函数,而在所有规范完成之后,则调用afterAll函数。这些功能可用于通过昂贵的

  • 如果可能的话,我愿意使用服务。 请建议。 谢谢 我还使用来呈现视图

  • 问题内容: 我有一个AngularJS应用,可使用GitHub上的oAuth SSO进行身份验证。我试图找出一种使用量角器和自动化登录测试的方法。我无法弄清楚如何检索非角度字段以及如何管理页面加载的等待时间,我的规范如下所示: 我这样运行命令: 如何正确加载身份验证页面,在字段中输入正确的信息,然后等待重定向回到我的Angularized应用程序(我可以从那里处理事情)。 我试图使用调试器跳入此代

  • 我最近一直在用厚颜无耻为我的角度应用程序编写单元测试,到目前为止一切都很好,但现在我开始编写e2e测试,并想使用量角器,因为这是在现代角度中进行e2e的推荐方法,但我不确定如何将两者集成。 我一直在搜索,找不到任何例子或提示。你可以在这里看到我目前正在我的一个宠物项目中尝试的设置:https://github.com/guerrademitos/MitoPedia

  • 问题内容: 我希望能够使用Protractor测试我的Angular应用程序。由于我使用RequireJS,因此无法在DOM中使用指令,这就是为什么我使用手动引导Angular的原因。 量角器输出如下错误输出: 错误:在页面上找不到Angular :重试以寻找超出的角度 然后,我意识到量角器文档中有一个警告: 对于使用angular.bootstrap手动引导的应用,Protractor不能立即使