gpt4 book ai didi

Selenium:检查是否存在元素

转载 作者:行者123 更新时间:2023-12-05 02:16:10 24 4
gpt4 key购买 nike

在实时自动化中,我们是否在对每个元素执行某些操作之前检查每个元素(在测试中)是否存在?

只要有findElement 语句,就有可能出现NoSuchElementException。我们是否应该每次都检查元素是否存在?

是否每个 findElement 语句都需要被 try-catch block 包围?

最佳答案

有两种情况需要考虑:

  1. 元素存在;意味着它是否存在于 DOM 中。
  2. 元素可见;意味着它在 DOM 中并且没有隐藏或等效标志。

对于第一种情况,我使用了以下辅助方法:

this.waitForElement = function(locator) {
browser.wait(function() {
return browser.isElementPresent(locator);
}, testData.Timeout.TWO_MINUTES);
};

这将等待任意时间让与提供的定位器匹配的元素出现(它存在于 DOM 中)。

对于第二种情况,我使用这个辅助方法:

this.waitForElementIsVisible = function(el){
let EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(el), testData.Timeout.TWO_MINUTES, "Element did not become visible after 2 minutes");
};

这将 WebElement 作为单个参数并等待直到元素变得可见(它存在于 DOM 中并且没有通过 CSS 样式或其他东西隐藏)。

作为奖励,我还发现这个辅助方法对于测试表单中的错误状态很有用:

this.waitForElementIsClickable = function(el){
let EC = protractor.ExpectedConditions;
browser.wait(EC.elementToBeClickable(el), testData.Timeout.TWO_MINUTES, "Element did not become clickable after 2 minutes");
};

WebElement 作为第一个参数并等待直到可以单击该 WebElement。

请注意,我使用的是 Protractor ,并在这些片段中引用 Protractor。因此,除非您也使用 protractor ,否则这些可能无法通过直接复制+粘贴 100% 工作。不过,调整它们以适应您的设置应该很容易。

关于Selenium:检查是否存在元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610553/

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