2013-06-20 21 views
1

我已經編寫了代碼來驗證文本和可見性WITHOUT定位器。請建議傢伙,這是正確的方法?在硒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(); 

} 

} 
+1

要說實話,我不明白你想達到什麼目的,你在昨天的問題中得到了什麼?你接受了答案而不是使用它?你知道'element.isDisplayed()'檢查body元素的可見性,而不是文本? –

+0

//這將顯示我的文本是否存在(不使用定位器) boolean feedBack = driver.findElement(By.cssSelector(「body」)).getText()。contains(client); //這將返回當前文本是否可見(不使用定位器) WebElement element = driver.findElement(By.cssSelector(「body」)); boolean feedbackVisible = element.isDisplayed(); – bugCracker

+0

WebElement element = driver.findElement(By.cssSelector(「body」)); 會提取body rit中的所有元素?那麼如果身體可見,那麼爲什麼不在體內的內容是可見的? – bugCracker

回答

2

我會做得更好一點。我會跳過問你爲什麼要這樣做,並假設你只需要這樣做。

所以。這個安全漏洞是在這一行:

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

} 

} 
相關問題