一尘不染

如何在量角器测试中使用browser.getCurrentUrl()?

selenium

今天,我一直在努力处理以下这些量角器代码行:

element(by.linkText("People")).click();
browser.waitForAngular();        
var url = browser.getCurrentUrl();
...

getCurrentUrl放在waitForAngular()语句后似乎总是失败。

错误输出太模糊:

UnknownError:JavaScript错误:等待结果时卸载文档

那么,单击超链接并检查新URL的正确方法是什么?


这是我的测试:

如果我getCurrentUrl()在点击链接之前,

it('can visit people page', function () {
    var url = browser.getCurrentUrl();
    element(by.linkText("People")).click();
    expect(true).toBe(true);
});

测试将通过。

如果我getCurrentUrl()点击链接后,

it('can visit people page', function () {
    var url = browser.getCurrentUrl();
    element(by.linkText("People")).click();
    expect(true).toBe(true);
    url = browser.getCurrentUrl();
});

UnknownError上面的输出在Protractor中引发错误。什么地方出了错?


阅读 264

收藏
2020-06-26

共1个答案

一尘不染

不用waitForAngular()调用,而是 等待URL更改

browser.wait(function() {
  return browser.getCurrentUrl().then(function(url) {
    return /index/.test(url);
  });
}, 10000, "URL hasn't changed");

最初由@juliemr在UnknownError上建议:javascript错误:等待result时文档被卸载

2020-06-26