Protractor 如何等待任何元素出现在量角器中

Protractor 如何等待任何元素出现在量角器中,protractor,wait,Protractor,Wait,我是量角器新手,在放置等待语句时遇到问题 我的代码如下: element(by.xpath('html/body/app-root/div/app-dashboard/div/div/div[2]/div[1]/div/app-dashboard-filter/span/span/img')).click(); 在执行click()操作之前,我希望量角器等待'/html/body/app root/div/app dashboard/div/div/div[1]/div[3]/div/div[

我是量角器新手,在放置等待语句时遇到问题 我的代码如下:

element(by.xpath('html/body/app-root/div/app-dashboard/div/div/div[2]/div[1]/div/app-dashboard-filter/span/span/img')).click();
在执行click()操作之前,我希望量角器等待
'/html/body/app root/div/app dashboard/div/div/div[1]/div[3]/div/div[1]/h5'
元素。该元素在4秒内出现

在搜索互联网后,我尝试了以下方法:

1. browser.driver.sleep(5000);
2. browser.driver.manage().timeouts().setScriptTimeout(55000);
3. expect(element(by.xpath(/html/body/app-root/div/app-dashboard/div/div/div[1]/div[3]/div/div[1]/h5')).isPresent()).toBe(true);
4. browser.manage().timeouts().implicitlyWait(5000);

但由于这样或那样的错误,我什么也做不到。请帮忙

您可以在脚本中实现dragrator.ExpectedConditions以等待

代码:

var EC=protractor.ExpectedConditions;
var ele=element(locator)

browser.wait(EC.visibilityOf(ele),timeout,"Custom Error Message");
更多预期条件的链接:

使用可见性检查和元素可在预期条件下禁用,它可以正常工作。请查找下面的代码片段:

 var targetEle = element(by.xpath(/html/body/app-root/div/app-dashboard/div/div/div[1]/div[3]/div/div[1]/h5'));
    var EC_TIMEOUT = 5000;
    browser.wait(EC.visibilityOf(targetEle), EC_TIMEOUT).then(function(){
        browser.wait(EC.elementToBeClickable(targetEle), EC_TIMEOUT).then(function(){
            //callback();
            targetEle.click().then(function() {
                callback();
            });
        });
    });

你可以通过两种方式做到这一点

  • 查看元素在DOM中是否可见
  • 查看元素在页面中是否可见
  • 如果我们使用ng if,则可以使用第1点(因为ng if隐藏DOM中的元素)

    示例:-

    var EC=protractor.ExpectedConditions;
    browser.wait(EC.presenceOf(element),timeout,"Custom Error Message");
    
    var EC=protractor.ExpectedConditions;
    browser.wait(EC.visibilityOf(element),timeout,"Custom Error Message");
    
    第二点可以正常使用

    示例:-

    var EC=protractor.ExpectedConditions;
    browser.wait(EC.presenceOf(element),timeout,"Custom Error Message");
    
    var EC=protractor.ExpectedConditions;
    browser.wait(EC.visibilityOf(element),timeout,"Custom Error Message");
    

    获取此错误:失败:等待异步角度任务在11秒后完成时超时。这可能是因为当前页面不是角度应用程序。有关更多详细信息,请参见常见问题解答:在等待带有定位器的元素时-locator:By(xpath、/html/body/app root/div/app dashboard/div/div/div[1]/div[3]/div/div/div/div[1]/h5)添加此项后没有更改:allScriptsTimeout:15000,如果页面不存在,请添加代码:browser.ignoreSynchronization=true;