在锚标记上测试ng-click处理程序

时间:2016-06-02 11:23:05

标签: javascript html angularjs protractor

我有一个常规(非JS)锚标记链接到外部网站,但还有其他行为可以在更改DOM的点击上执行

<body ng-controller="MyController">
  <a href="https://www.google.co.uk/" ng-click="inProgress = true">
    {{ inProgress ? "Going to Google" : "Go to Google" }}
  </a>
</body>

我想在E2E量角器测试中测试这种行为。但是,看起来一旦点击链接,后续命令就会在外部页面的上下文中运行。例如,以下测试通过:

browser.element(by.css('a')).click();
expect(browser.getCurrentUrl()).toBe('https://www.google.co.uk/');

但是以下测试失败

browser.element(by.css('a')).click();
expect(browser.element(by.css('body')).getText()).toBe('Going to Google');

如果失败,则会将Google主页的内容显示为body的文字。

如何测试点击非Javascript a代码后会发生什么?

1 个答案:

答案 0 :(得分:1)

我想你需要在点击发生后等待文本改变。从您的代码中,您是在点击后立即查找文本?你试过Expected Conditions

吗?
var EC = protractor.ExpectedConditions;
browser.wait(EC.textToBePresentInElement($('body'), 'Going to Google'), 5000);