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

时间:2017-11-06 11:28:28

标签: protractor wait

我是Protractor的新手,在发出等待声明方面存在问题 我的代码如下:

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秒内完成

搜索完INTERNET后,我尝试了以下内容:

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);

但由于一个或另一个错误,对我来说没有任何作用。请帮忙!

3 个答案:

答案 0 :(得分:3)

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

<强>代码:

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

browser.wait(EC.visibilityOf(ele),timeout,"Custom Error Message");

更多预期条件的链接: https://github.com/angular/protractor/blob/master/lib/expectedConditions.ts

答案 1 :(得分:3)

使用能见度检查&amp; elementToBeClickable预期条件,它的工作原理。请在下面找到代码片段:

{{1}}

答案 2 :(得分:1)

你可以用两种方式做到这一点。

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

    示例: -

    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");