Selenium:WebElement是否有孩子?

时间:2016-02-17 15:03:34

标签: selenium selenium-webdriver webdriver

我如何知道WebElement是否有孩子?

具体来说,我有以下要素:

enter image description here

capabilities元素有时会在其中包含span元素,有时不会

我需要那些跨越孩子的人。

我怎样才能得到它们?

谢谢!

4 个答案:

答案 0 :(得分:0)

最简单的方法是使用try/except

from selenium.common.exceptions import NoSuchElementException
try:
    driver.find_element_by_xpath('//td[@class="capabilities"]/span')
except NoSuchElementException:
    print("There are no child 'span' elements")

答案 1 :(得分:0)

我必须说我的代码中有一个错误导致我认为我不知道答案,但对于每个可能感兴趣的人,我都使用了这个:

List spans = capab.findElements(By.tagName("span"));

然后只检查了

spans.size().

它有效! : - )

答案 2 :(得分:0)

你可以试试(使用引用this case

try{
     driver.findElement(By.xpath("//td[@class='capabilities']/span");
     System.out.println("There is span!");
     return true;
catch(NoSuchElementException e){
     System.out.println("No span!");
     return false;
    }
}

答案 3 :(得分:0)

要解释@dushkin答案,我们使用findElements因为它的例外安全:

By locator = By.xpath(".//td/span");
List<WebElement> subElements = capab.findElements(locator);

然后只检查了

boolean hasSubElements = (subElements.size() > 0)