2014-02-24 48 views
0

我有这样的结构,我有x路径/html/body/div/div[2]/p[3]。我如何检查元素的存在:Total topics,Total posts,Total members,Our newest member如何检查网页中是否存在元素?

<p> 
      Total posts 
     <strong>1</strong> 
      • Total topics 
     <strong>1</strong> 
      • Total members 
     <strong>1</strong> 
      • Our newest member 
     <strong> 
     <a class="username-coloured" style="color: #AA0000;" href="./memberlist.php?mode=viewprofile&u=2&sid=b2d8cf0665bc4dda70a20be1c2801659">Admin</a> 
     </strong> 
    </p> 

我尝试这样的:

form.findElement(By.xpath("/html/body/div/div[2]/p[3]")).getAttribute("value").equalsIgnoreCase(
     "Total posts")) 

但它不工作。我如何正确地做到这一点?

回答

1

假设你在DOM没有其他<strong>元素,你可以试试这个:

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

List<String> getTitles(String url) 
{ 
    List<String> titles = new ArrayList<String>(); 
    WebDriver driver = new FirefoxDriver(); 
    driver.get(url); 
    List<WebElement> strongs = driver.findElements(By.tagName("strong")); 
    for (WebElement strong : strongs) 
     titles.add(strong.getText()); 
    driver.quit(); 
    return titles; 
} 

boolean checkTitles(List<String> titles,String suffix) 
{ 
    for (String title : titles) 
     if (title.endsWith(suffix)) 
      return true; 
    return false; 
} 

用例:

List<String> titles = getTitles("http://www.google.com"); 
boolean a = checkTitles(titles,"Total topics"); 
boolean b = checkTitles(titles,"Total posts"); 
boolean c = checkTitles(titles,"Total members"); 
boolean d = checkTitles(titles,"Our newest member");