Java 在selenium webdriver中验证文本的存在性和可见性(无定位器)

Java 在selenium webdriver中验证文本的存在性和可见性(无定位器),java,selenium,webdriver,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(){

我已经编写了代码来验证没有定位器的文本和可见性。请建议大家,这是正确的方法吗

如果有其他方法,我们将不胜感激

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);
因为从理论上讲,文本可以是不在页面上的内容,然后您将得到
NoTouchElementException

所以更好的方法是

//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();

}

}

老实说,我不明白你想达到什么目的,你昨天的问题中他们说了什么,你明白了吗?你接受了答案却没有使用它?您是否意识到
element.isDisplayed()
检查body元素的可见性,而不是文本?//这将显示我的文本是否存在(不使用定位器)布尔反馈=driver.findelelement(By.cssSelector(“body”).getText().contains(client);//这将返回当前文本是否可见(不使用定位器)WebElement=driver.findElement(By.cssSelector(“body”);布尔反馈可见=element.isDisplayed();WebElement=driver.findElement(By.cssSelector(“body”);是否将提取身体内部的所有元素?那个么,若正文是可见的,那个么为什么正文中的内容不可见呢?我的主要座右铭是验证文本是否存在,并且在不使用定位器的情况下是否可见。它帮助我在网站设计准备就绪之前编写测试脚本。