Selenium中的FindElement,不使用Xpath

时间:2017-09-01 18:16:32

标签: java selenium

我想在不使用xpath的情况下找到该元素,但我的页面上有另外的ul元素和“class = title”。所以,我也不能使用Type或“class = title”。

<div id="pai">
<div class="def">
    <div class="abc" >
        <p class=title>Title</p>
            <ul>
                <li></li>

我正在考虑下面的内容,但我不知道这是不是最好的做法:

WebElement um = driver.findElements(By.className("abc"));
WebElement dois = um.findElements(By.className("title"));
tamUl = dois.findElements(By.tagName("ul")).size(); 

1 个答案:

答案 0 :(得分:0)

如果您不能或不愿意使用Xpath或CSS选择器,您希望获得页面上所有所需元素的列表。然后根据经验,通过调试或使用条件选择要使用的特定元素的索引。以下可能是您想尝试的情况:

List <WebElement> elements = driver.findElements(By.className("title"));

if (elements.size() > 0) {
  elements.get(INDEX_OF_YOUR_ELEMENT).findElements(By.tagName("ul")).size();   
}

注意findElement()findElements()方法之间的区别。虽然如果找到多个匹配项,findElement()仅返回第一个元素,同时如果找不到任何内容则抛出NoSuchElementException,其中findElements()仅返回空列表。