gpt4 book ai didi

javascript - 想要删除 Browser.sleep()

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:36 24 4
gpt4 key购买 nike

大家好,我正在使用 Protractor 来测试非 Angular 网站。最初在测试时我有 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();

关于javascript - 想要删除 Browser.sleep(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com