gpt4 book ai didi

java - 遍历java中的每个元素看是否显示

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

我是 Java 新手,需要有关执行以下操作的最佳方式的帮助:

我想获取属于某个类的所有元素,但我想对显示的这些元素的数量进行计数。我已经设置了代码来创建 int 计数器、findelements 和断言,但基本上我的问题是如何在 java 中创建一个 for 循环来简单地检查元素列表中的元素是否显示,然后在计数上+1 ?

    int testNumber = 0;
List<WebElement> testItems = _driver.findElements(By.className("test"));

//Loop each element from the list and if it's displayed then +1 for test Number

Assert.assertEquals(testNumber, 4,
"Mismatch between the number of test items displayed");

最佳答案

使用方法 WebElement#isDisplayed ( documentation ) 获取元素的状态。

您需要做的就是设置一个计数器,例如int counter = 0。然后在所有元素上创建一个循环,例如 for (WebElement e : testItems) { ... }。然后,在循环内创建某种 if (e.isDisplayed()) { ... }。在其中您可以增加计数器,例如 counter++。总而言之:

int counter = 0;
for (WebElement e : testItems) {
if (e.isDisplayed()) {
counter++;
}
}

此变体使用增强的 for 循环。您当然也可以使用其他循环变体。

使用流,这可以成为一个紧凑的单行代码,例如

int count = testItems.stream()
.filter(WebElement::isDisplayed)
.count();
<小时/>

请注意,如果 WebElement 在生成后没有得到快速处理,它们可能会很快过时(具体取决于网站)。他们抛出一个 StaleElementReferenceException 来表明这一点。每当网站自行重建(完全或部分)时,就会发生这种情况,然后从网站的旧状态检索您的元素,因此无效。

如果您遇到这种情况,您可以直接收集某个元素的显示状态,然后再查找其他元素。这减少了生成和访问单个 WebElement 之间的时间。

关于java - 遍历java中的每个元素看是否显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225780/

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