如何通过标签检查元素是否存在?

时间:2018-04-22 15:39:05

标签: java selenium testing

我在页面上有一个元素

<a data-cke-saved-name name></a>

我想检查页面上是否存在此元素? 我试过这种方式

WebElement link = null;
    try {
        link = Main.s_driver.findElement(By.tagName("data-cke-saved-name name"));
        System.out.println("OK");
    } catch (NoSuchElementException e) {
        System.out.println("Something went wrong");
    }

但它不起作用。有没有其他方法来检查这个元素?

3 个答案:

答案 0 :(得分:0)

我曾经使用过一些时间为我工作

  if(driver.findElement(By.tagname("value"))!= null){
    System.out.println("OK");
    }else{
    System.out.println("Not there");
    }

Howerver try.. catch()也可以检查现有元素,好像不存在然后它会抛出异常

答案 1 :(得分:0)

找到答案。在这种情况下,我需要通过By.xpath

指定标记为空
link = Main.s_driver.findElement(By.xpath("//a[contains(@data-cke-saved-name, '')]"));

答案 2 :(得分:0)

如果在检查元素存在后不需要使用该元素,请使用期望的条件类。

bool exists = ExpectedConditions.presenceOfElementLocated(
                              By.CssSelector("[data-cke-saved-name='name']"));

如果确实需要在查明元素是否存在后使用该元素,那么您需要回退到使用driver.findElement。我要先检查它是否存在,要么写一个webdriver等待轮询,直到driver.findElement没有抛出异常。

请记住,数据属性计为css选择器。因此,您可以使用CssSelector By代替较慢的XPath By:)