Javascript 如何在量角器测试中使用browser.getCurrentUrl()?
我今天一直在努力解决这些量角器代码行:Javascript 如何在量角器测试中使用browser.getCurrentUrl()?,javascript,angularjs,selenium,selenium-webdriver,protractor,Javascript,Angularjs,Selenium,Selenium Webdriver,Protractor,我今天一直在努力解决这些量角器代码行: element(by.linkText("People")).click(); browser.waitForAngular(); var url = browser.getCurrentUrl(); ... 当放置在waitForAngular()语句之后时,getCurrentUrl似乎总是失败 错误输出太模糊: 未知错误:javascript错误:等待结果时卸载文档 那么,单击超链接并检查新url的正确方法是什么 以下是我的测试:
element(by.linkText("People")).click();
browser.waitForAngular();
var url = browser.getCurrentUrl();
...
当放置在waitForAngular()
语句之后时,getCurrentUrl
似乎总是失败
错误输出太模糊:
未知错误:javascript错误:等待结果时卸载文档
那么,单击超链接并检查新url的正确方法是什么
以下是我的测试: 如果在单击链接之前I
getCurrentUrl()
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
});
考试会通过的
如果在单击链接后IgetCurrentUrl()
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
url = browser.getCurrentUrl();
});
在量角器中抛出一个错误,上面的输出为
UnknownError
。出了什么问题?请等待URL更改,而不是waitForAngular()
call:
最初由@juliemr at.建议。这段代码工作正常
var handlePromise = browser.driver.getAllWindowHandles();
handlePromise.then(function (handles) {
// parentHandle = handles[0];
var popUpHandle = handles[1];
// Change to new handle
browser.driver.switchTo().window(popUpHandle).then(function() {
return browser.getCurrentUrl().then(function(url) {
console.log("URL= "+ url);
});
})
});
我在测试中没有看到任何地方实际引用了url变量。我使用类似于
expect(browser.getCurrentUrl()).toContain(“联系我们”)代码>JK,我看到它被注释掉了。不,我还没有引用url。只需调用browser.getCurrentUrl
即可中断测试!您是否尝试过使用browser.sleep(2000)
延迟,然后在单击链接后尝试expect
块?为什么我们必须通过sleep
延迟?browser.waitForAngular()
会延迟吗?默认情况下应该延迟,但我在量角器方面遇到了很多问题,有时手动触发事件效果更好\Jim Evans在几篇与Selenium相关的文章(如)中指出,“您可能不认为getWindowHandles()返回的句柄有顺序。这是一个常见的错误,但句柄显式地没有顺序。”我实际上使用了这样发布的代码,并且浪费了很多时间来弄清楚这一点。
var handlePromise = browser.driver.getAllWindowHandles();
handlePromise.then(function (handles) {
// parentHandle = handles[0];
var popUpHandle = handles[1];
// Change to new handle
browser.driver.switchTo().window(popUpHandle).then(function() {
return browser.getCurrentUrl().then(function(url) {
console.log("URL= "+ url);
});
})
});