gpt4 book ai didi

javascript - 我怎样才能等待一个条件?

转载 作者:IT王子 更新时间:2023-10-29 03:01:33 25 4
gpt4 key购买 nike

我是 Protractor 的新手,我正在尝试实现端到端测试。我不知道这是否是正确的方法,但是......我要测试的页面不是基于完整 Angular 页面,所以...我遇到了一些麻烦。

在我的第一个规范中,我有:

describe('should open contact page', function() {
var ptor = protractor.getInstance();

beforeEach(function(){

var Login = require('./util/Login');
new Login(ptor);
});

我已经创建了这个登录类,但是登录后我想打开联系人页面,但是 Protractor 会在页面完全加载之前立即尝试查找元素。

我试过使用:

browser.driver.wait(function() {

expect(browser.findElement(by.xpath("//a[@href='#/contacts']")).isDisplayed());
ptor.findElement(by.xpath("//a[@href='#/contacts']")).click();

});

但它不起作用...它总是尝试在页面加载之前找到元素。我也试过这个:

browser.driver.wait(function() {
expect(ptor.isElementPresent(by.xpath("//a[@href='#/contacts']")));
ptor.findElement(by.xpath("//a[@href='#/contacts']")).click();
});

我可以使用 browser.sleep(); 来做到这一点,但我认为这不是一个好的选择。任何想法?在我的登录类(class)中,我有:

ptor.ignoreSynchronization = true;

如何在 Protractor 尝试点击它之前等待这个@href='#/contacts

最佳答案

Protractor 1.7.0 还引入了一项新功能:Expected Conditions .

有几个预定义的条件可以显式等待。如果您想等待元素出现:

var EC = protractor.ExpectedConditions;

var e = element(by.id('xyz'));
browser.wait(EC.presenceOf(e), 10000);

expect(e.isPresent()).toBeTruthy();

另见:

关于javascript - 我怎样才能等待一个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072327/

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