findElements中的webdriver findElement

时间:2014-01-14 19:57:29

标签: java selenium

我想知道是否有一种有效的方法来查找元素列表中的元素 例如:

WebElement menuItem;
List<WebElement> allMenuItems = driver.findElements(By.className("x-menu-list-item"));      
    for(WebElement item : allMenuItems){
        if(item.getText().equals("aaa"){
                      menuItem = item;
                      break;
                    }
    }
menuItem.click();

所以不是循环查找基于文本的元素,是否有一种从元素列表中查找元素的有效方法?

1 个答案:

答案 0 :(得分:0)

是。您可以构建初始查询以立即查找元素。

如果您不需要按文本搜索,您可以使用CSS选择器来获得最大的可读性和效率。

但是,如果需要按文本搜索,则必须使用XPath表达式。

例如,您的代码可能只是

WebElement menuItem = driver.findElement(By.xpath("//*[contains(@class, 'x-list-menu-item') and contains(text(), 'aaaa')]"));

请注意,使用XPath进行的类查找并不完全正确。在线搜索以找到正确的结构。