如何在量角器测试中使用 browser.getCurrentUrl()?
How to use browser.getCurrentUrl() in a protractor test?
我今天一直在为这几行 Protractor 代码苦苦挣扎:
element(by.linkText("People")).click();
browser.waitForAngular();
var url = browser.getCurrentUrl();
...
似乎 getCurrentUrl
放在 waitForAngular()
语句之后总是失败。
错误输出太模糊:
UnknownError: javascript error: document unloaded while waiting for result
那么,单击 hyperlink 并检查新 url 的正确方法是什么?
这是我的测试:
如果我 getCurrentUrl()
在点击 link 之前,
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
});
测试会通过。
如果我getCurrentUrl()
点击link后,
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
url = browser.getCurrentUrl();
});
上面的 UnknownError
输出在 Protractor 中抛出错误。出了什么问题?
而不是 waitForAngular()
调用,等待 URL 更改:
browser.wait(function() {
return browser.getCurrentUrl().then(function(url) {
return /index/.test(url);
});
}, 10000, "URL hasn't changed");
@juliemr 最初在 UnknownError: javascript error: document unloaded while waiting for result 上建议。
这段代码可以正常工作
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);
});
})
});
我今天一直在为这几行 Protractor 代码苦苦挣扎:
element(by.linkText("People")).click();
browser.waitForAngular();
var url = browser.getCurrentUrl();
...
似乎 getCurrentUrl
放在 waitForAngular()
语句之后总是失败。
错误输出太模糊:
UnknownError: javascript error: document unloaded while waiting for result
那么,单击 hyperlink 并检查新 url 的正确方法是什么?
这是我的测试:
如果我 getCurrentUrl()
在点击 link 之前,
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
});
测试会通过。
如果我getCurrentUrl()
点击link后,
it('can visit people page', function () {
var url = browser.getCurrentUrl();
element(by.linkText("People")).click();
expect(true).toBe(true);
url = browser.getCurrentUrl();
});
上面的 UnknownError
输出在 Protractor 中抛出错误。出了什么问题?
而不是 waitForAngular()
调用,等待 URL 更改:
browser.wait(function() {
return browser.getCurrentUrl().then(function(url) {
return /index/.test(url);
});
}, 10000, "URL hasn't changed");
@juliemr 最初在 UnknownError: javascript error: document unloaded while waiting for result 上建议。
这段代码可以正常工作
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);
});
})
});