我正在使用Selenium WebDriver和Java。我正在尝试创建一个循环遍历WebElements列表以返回包含文本“Ooga Booga”的第一个WebElement的方法,如果列表中没有包含此文本的元素,则返回null。如何循环访问WebElements列表并选择一个具有条件的WebElement?
String myText = element.findElement(By.cssSelector("classC")).getText();
我怎样才能继续循环通过我的列表,而忽略任何元素没有“someDiv:
public class myClass {
private static WebElement element = null;
private static List<WebElement> elements = null;
public static WebElement returnOneElement (WebDriver driver){
elements = driver.findElements(By.cssSelector("someSelector"));
for (WebElement element : elements){
String myText = element.findElement(By.cssSelector("classC")).getText();
if (myText.contains("Ooga Booga")) {
return element;
}
}
return null;
}
,直到我遇到不具有这种属性的元素这一切工作正常“里面呢?
<div class="someSelector">
<div class="classA">
<div class="classB">
</div>
<div class="someSelector">
<div class="classA">
<div class="classB">
<div class="classC">
</div>
我需要搜索div“classC”中的文本。
SomeDiv是什么?那是标记名div,还是其他一些css路径定位器?你提到的属性,所以我假设一个类名或某种类型。如果是这样,你可以使用不需要该类名的另一个cssSelector。尝试通过元素标记名获取列表。你不必担心这种方式丢失属性 – robx
这是另一个CSS路径定位器..我想这个比喻可能有所帮助: 我正在循环一副牌。我继续浏览这些卡片,直到我找到一颗心灵之王。我正在搜索每个卡'someSelector',并检查它是否是一个心脏'someDiv',然后检查它是否是King'myText'。只要套牌中的每张牌都是一颗心,这种方式就可以正常工作。但是当我遇到一个Spade的时候,这将抛出一个NoSuchElementException,因为它没有在卡中看到一个Heart。我正在寻找一种方法,比如'isEmpty()',但对于单个'WebElement'。 – qaNoob
对不起,我明白你想要什么,但很难帮助没有HTML。我们所要做的只是猜测 – robx