我有一个单击按钮并重定向到用户仪表板的测试。发生这种情况时,Webdriver返回: javascript error: document unloaded while waiting for result.
javascript error: document unloaded while waiting for result.
为了解决这个问题,我将插入browser.sleep(2000)到发生重定向的位置,并假设我的CPU使用率很低,这可以解决此问题。但是,2000 ms是任意的并且很慢。是否有类似的东西browser.waitForAngular()会等到Angular在重定向页面上加载之前expect(..)?
browser.sleep(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); }); });
您认为这样的事情对您有用吗?最多需要等待10秒,URL才能包含文本“ 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); };
只需粘贴您期望的网址的正则表达式即可。
或者,您也可以等待下一页中的元素出现:
var nextPageButton = $('#nextPage'); nextPageButton.click(); var elementFromSecondPage = $('#coolElement'); browser.wait(protractor.until.elementIsVisible(elementFromSecondPage), 5000, 'Error: Element did not display within 5 seconds');
使用.click时,量角器自然会等待角度操作来完成附加到该点击的动作,例如更改页面。但是,在页面更改时,您可能仍然需要加载特定的内容,因此在该部分可用之前测试失败。使用它,它应该等待单击零件完成,然后等待元素出现。