java - 在 selenium webdriver 中无需定位器即可验证文本的存在和可见性

标签 java selenium webdriver selenium-webdriver

我已经编写了代码来验证文本和可见性,而无需定位器。请大家推荐一下,这是正确的方法吗?

如果有任何替代方法,我们将不胜感激您的建议。

public class TextVisibility {

WebDriver driver = new FirefoxDriver();
public static String baseUrl = "website url";
public String client = "your search string";

public void visibilityOfText(){

    driver.get(baseUrl);
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    WebElement element = driver.findElement(By.cssSelector("body"));
    boolean feedBack = driver.findElement(By.cssSelector("body")).getText().contains(client);
    boolean feedbackVisible = element.isDisplayed();
    if(feedBack==true){
        System.out.println(client+ "is present");
        if(feedbackVisible==true){
            System.out.println(client+ "is visible");
        }
        else{
            System.out.println(client+ "is not visible");
        }

    }
    else{
        System.out.println(client+ "is not present");

    }

    driver.close();
    driver.quit();

}

}

最佳答案

我会做得更好一点。我将跳过询问您为什么要这样做并假设您只需要这样做。

所以。缺陷在于这一行:

boolean feedBack = driver.findElement(By.cssSelector("body")).getText().contains(client);

因为理论上文本可能是页面上没有的内容,然后您将得到 NoSuchElementException

所以更好的方法是

//skipping initialization part
try{
  boolean feedBack = driver.findElement(By.cssSelector("body")).getText().contains(client);
  boolean feedbackVisible = element.isDisplayed();
} catch (NoSuchElementException e){
   boolean feedback = false;
   boolean feedbackVisible = false;
 }

if(feedBack==true){
    System.out.println(client+ "is present");
    if(feedbackVisible==true){
        System.out.println(client+ "is visible");
    }
    else{
        System.out.println(client+ "is not visible");
    }

}
else{
    System.out.println(client+ "is not present");

}

driver.close();
driver.quit();

}

}

关于java - 在 selenium webdriver 中无需定位器即可验证文本的存在和可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17206900/

相关文章:

java - Java 中泛型类型的行为

java - 警告 : Documents NO-HEAD in Eclipse

java - 当 Enum 的字符串表示和类型在运行时已知时如何获取 Enum?

python - 如何使用 Selenium [在 Python 中] 为 Firefox 导入 SSL 证书?

google-chrome - driver.manage().window().maximize();不管用

java - Akka添加slf4j时出现ClassNotFoundException

java - ListIterator 或 Iterator 不会在 List 末尾停止

java - 在 Java 中使用 selenium webdriver 更改用户代理

java - 无法使用 Selenium 和 Java 单击 Flipkart 主页中图像 slider 中的图像之一

selenium - 基于父子节点的 CSS 选择器?