大家好,我正在量角器上测试非角度网站。最初在测试时,我已browser.sleep()使页面完全加载。我知道添加browser.sleep并不是测试的好方法,因此希望将其从代码中删除。
browser.sleep()
我尝试使用browser.wait,但是遇到错误,添加broswer.manage.timeouts.implicitwait()时,等待不会发生。我在这个问题上困扰了很长时间,请帮帮我:(
var co = require('co'); var path = require('path'); describe("Portal: Partner Admin ", function () { beforeEach(function () { browser.ignoreSynchronization = true; }); it("test", co.wrap(function* () { yield browser.get(browser.params.baseUrl); 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("Userid"); 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); var elmOK = browser.driver.findElement(by.xpath('//*[@id="lnav"]/li[3]/a')); yield elmOK.click(); browser.sleep(1500); browser.driver.findElement(by.xpath('//*[@id="administration"]/div/div[1]/select/option[2]')).click(); browser.sleep(5000); browser.driver.findElement(by.xpath('//*[@id="administration"]/div/div[2]/table/tbody/tr[1]/td[10]/span')).click(); browser.sleep(5000); browser.driver.findElement(by.xpath('//*[@id="content"]/div/div[2]/div/div/div/div[3]/button[1]')).click();//Delete the file browser.sleep(5000); }));
不要等待页面本身,而要等待页面上的元素。
诀窍是先等待元素出现,然后再等待其显示。如果您不先等待“ isPresent”,则仅调用“ isDisplayed”会导致错误。这是一个很好的功能。
function waitForElement(el, waitTimeoutMilliseconds){ return browser.wait(function() { return el.isPresent(); }, waitTimeoutMilliseconds) .then(function(){ return browser.wait(function() { return el.isDisplayed(); }, waitTimeoutMilliseconds); }); }
代替
browser.sleep(5000); var elmOK = browser.driver.findElement(by.xpath('//*[@id="lnav"]/li[3]/a')); yield elmOK.click();
做
var elmOk = element(by.xpath('//*[@id="lnav"]/li[3]/a')); waitForElement(elmOk, 5000); elmOk.click();