我正在使用量角器为非角度js网站创建测试脚本。我的代码如下:
var co = require('co');
var path = require('path');
describe("TEST", function () {
it("test", co.wrap(function* () {
browser.ignoreSynchronization = true;
yield browser.get(URL, 60000);
browser.sleep(5000);// I want to remove the sleep statements
var elmOK = browser.driver.findElement(by.css('a[href="#login"]'));
yield elmOK.click();
expect(browser.getCurrentUrl()).toContain("login");
yield browser.switchTo().frame('here-account-sdk').then(function () {
browser.driver.findElement(by.id('sign-in-email')).sendKeys("uid");
browser.driver.findElement(by.id('sign-in-password-encrypted')).sendKeys("password");
browser.driver.findElement(by.xpath(' //*[@id="sign-in-form"]/div[2]/div[6]/form/fieldset[3]/button')).click();
});
browser.sleep(5000);// I want to remove the sleep statements
var elmOK = browser.driver.findElement(by.xpath('//*[@id="lnav"]/li[3]/a'));
yield elmOK.click();
browser.sleep(1500);// I want to remove the sleep statements
browser.driver.findElement(by.xpath('//*[@id="administration"]/div/div[1]/select/option[2]')).click();
browser.sleep(5000);// I want to remove the sleep statements
browser.driver.findElement(by.xpath('//*[@id="administration"]/div/div[2]/table/tbody/tr[1]/td[10]/span')).click();
browser.sleep(5000);// I want to remove the sleep statements
browser.driver.findElement(by.xpath('//*[@id="content"]/div/div[2]/div/div/div/div[3]/button[1]')).click();//Delete the file
browser.sleep(5000);// I want to remove the sleep statements
}));
});
如果我在代码中添加sleep,则测试按预期运行。但我想完全从我的代码中删除sleep语句。我提到了许多其他堆栈溢出问题,但它没有帮助。 :(
我第一次使用browser.manage().timeouts().implicitlyWait(5000);
,但我认为加载我的网址没有延迟。
我使用了预期的条件,但它也没有用。
我添加了browser.wait(1000)
,但我的脚本失败了。请告诉我,因为我觉得这个问题有点迷失。
答案 0 :(得分:0)
我认为问题在于这一行:
browser.ignoreSynchronization = true;
来自this SO
让量角器不等待Angular承诺,例如来自$ http或$ timeout的解析
量角器元素函数都返回promises,所以这可能是你问题的原因?
此结构看起来有点奇怪:
var elmOK = browser.driver.findElement(by.css('a[href="#login"]'));
yield elmOK.click();
我会简单地简化:
element(by.css('a[href="#login"]')).click();