nor*_*can 11 selenium unit-testing angularjs selenium-webdriver protractor
我有一个单击按钮并重定向到用户仪表板的测试.发生这种情况时,Webdriver返回:
javascript error: document unloaded while waiting for result.
为了解决这个问题,我browser.sleep(2000)在重定向发生时插入并假设我的CPU使用率很低,这就解决了这个问题.但是,2000毫秒是任意而缓慢的.是否会有类似的东西browser.waitForAngular()等待角度加载到重定向页面之前expect(..)?
it('should create a new user', () => {
$signUp.click();
$email.sendKeys((new Date().getTime()) + '@.com');
$password.sendKeys('12345');
$submit.click();
browser.sleep(2000); // Need alternative to sleep...
// This doesn't do it...
// browser.sleep(1);
// browser.waitForAngular();
$body.evaluate('user')
.then((user) => {
expect(user).toBe(true);
});
});Run Code Online (Sandbox Code Playgroud)
use*_*347 12
你认为这样的事情对你有用吗?这将等待最多10秒,以便网址包含文本'pageTwo',或者您放入的任何内容.
var nextPageButton = $('#nextPage');
nextPageButton.click().then(function(){
return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /pageTwo/.test(url);
});
}, 10000);
};
Run Code Online (Sandbox Code Playgroud)
只需坚持你期待的url的正则表达式.
或者,您也可以等待下一页中的元素出现:
var nextPageButton = $('#nextPage');
nextPageButton.click();
var elementFromSecondPage = $('#coolElement');
browser.wait(protractor.until.elementIsVisible(elementFromSecondPage), 5000, 'Error: Element did not display within 5 seconds');
Run Code Online (Sandbox Code Playgroud)
当使用.click时,量角器会自然地等待角度来完成附加到点击的动作,例如更改页面.但是,在页面更改时,您可能仍需要特定的内容才能加载,因此在该部分可用之前测试失败.使用它,它应该等待点击部分完成,然后等待元素出现.
扩展 user2020347 的回答:谢谢,解决了我的问题。我想知道为什么这不是内置函数。我将在很多地方使用它来等待浏览器导航。
为了使它更简洁,我做了一个小帮手:
Object.assign(global, {
waitUntilURLContains: string => {
let fn = () => {
return browser.driver.wait(() => {
return browser.driver.getCurrentUrl().then((url) => {
return url.includes(string);
});
}, waitDelay);
}
return fn.bind(null, string);
}
});
Run Code Online (Sandbox Code Playgroud)
在我的测试中:
$button.click().then(waitUntilURLContains('dashboard'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9759 次 |
| 最近记录: |