如何验证硒2中存在或可见的元素(Selenium WebDriver)

TEJ*_*EDI 32 java webdriver selenium-webdriver

任何人都可以给我发送示例代码如何验证元素

  1. 存在
  2. 可见性
  3. isenable
  4. textpresent

在Selenium WebDrvier中使用Java

Man*_*dan 66

我使用java print语句来理解.

  1. 检查元素存在:

    if(driver.findElements(By.xpath("value")).size() != 0){
    System.out.println("Element is Present");
    }else{
    System.out.println("Element is Absent");
    }
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    if(driver.findElement(By.xpath("value"))!= null){
    System.out.println("Element is Present");
    }else{
    System.out.println("Element is Absent");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要检查可见性:

    if( driver.findElement(By.cssSelector("a > font")).isDisplayed()){
    System.out.println("Element is Visible");
    }else{
    System.out.println("Element is InVisible");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 要检查启用:

    if( driver.findElement(By.cssSelector("a > font")).isEnabled()){
    System.out.println("Element is Enable");
    }else{
    System.out.println("Element is Disabled");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 检查文本

    if(driver.getPageSource().contains("Text to check")){
    System.out.println("Text is present");
    }else{
    System.out.println("Text is absent");
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 这些示例使用 ExpectedConditions 类会更好。 (2认同)
  • if( driver.findElement(By.cssSelector("a > font")).isDisplayed()){ 将不起作用,因为 isdisplayed 不返回 false。仅当显示时才返回真,否则会抛出未找到元素的异常... (2认同)

Dar*_*pto 9

你可以尝试类似的东西:

    WebElement rxBtn = driver.findElement(By.className("icon-rx"));
    WebElement otcBtn = driver.findElement(By.className("icon-otc"));
    WebElement herbBtn = driver.findElement(By.className("icon-herb"));

    Assert.assertEquals(true, rxBtn.isDisplayed());
    Assert.assertEquals(true, otcBtn.isDisplayed());
    Assert.assertEquals(true, herbBtn.isDisplayed());
Run Code Online (Sandbox Code Playgroud)

这只是一个例子.基本上,您声明并定义要使用的WebElement变量,然后Assert是否显示它们.这是使用TestNG断言.


Rip*_*sim 6

这是我的Selenium WebDriver的Java代码.编写以下方法并在断言期间调用它:

protected boolean isElementPresent(By by){
        try{
            driver.findElement(by);
            return true;
        }
        catch(NoSuchElementException e){
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试使用以下代码:

private enum ElementStatus{
        VISIBLE,
        NOTVISIBLE,
        ENABLED,
        NOTENABLED,
        PRESENT,
        NOTPRESENT
    }
    private ElementStatus isElementVisible(WebDriver driver, By by,ElementStatus getStatus){
        try{
            if(getStatus.equals(ElementStatus.ENABLED)){
                if(driver.findElement(by).isEnabled())
                    return ElementStatus.ENABLED;
                return ElementStatus.NOTENABLED; 
            }
            if(getStatus.equals(ElementStatus.VISIBLE)){
                if(driver.findElement(by).isDisplayed())
                    return ElementStatus.VISIBLE;
                return ElementStatus.NOTVISIBLE;
            }
            return ElementStatus.PRESENT;
        }catch(org.openqa.selenium.NoSuchElementException nse){
            return ElementStatus.NOTPRESENT;
        }
    }
Run Code Online (Sandbox Code Playgroud)