如何阅读页面上的所有标题标签并选择一个带有特定标题的hading标签?

时间:2016-05-30 15:17:44

标签: java selenium selenium-webdriver

我正在尝试阅读页面上的所有标题标记,并且只需要点击一个名为"标记为"的标题标记。 HTML的示例结构如下

<div> <ul> <li>
<a href="submit_button_clicked.php">
<h2>Submit Button Clicked</h2>
<figure>
</a>
</li>
<li>
<a href="dropdown.php">
<h2>Dropdown</h2>
<figure>

我所做的是创建一个自定义xpath并将其存储在List中,然后使用for循环遍历列表,但我无法/在控制台上读/写标记的值。

List l = ff.findElements(By.xpath("//div/ul/li/a/h2"));

3 个答案:

答案 0 :(得分:1)

要检索元素的文本值,请使用:

element.getText();

在您的列表中,它看起来像这样:

for(WebElement element : l) {
    System.out.println(element.getText());
}

由于您要单击某个元素,最好使用如下所示的xpath:

ff.findElements(By.xpath("h2[text()='Dropdown']")).click();

查找并单击所需的特定元素。上面的xpath选择器会查找带有确切文本“Dropdown”的h2元素,然后单击它。

答案 1 :(得分:1)

阅读所有<h2>标记可能类似于:

List<WebElement> elements = ff.findElements(By.xpath("//h2"));
for(WebElement element : elements) {
    System.out.println(element.getText()); // just to show that it prints text
}

请注意,我将列表定义为List<WebElement>,以避免使用raw types,并更改xpath以匹配任何<h2>

但是当您需要点击时,通常需要点击父<a>元素,而不是点击<h2>本身,即以下内容应点击正确的链接

ff.findElement(By.xpath("//a[@href='dropdown.php']")).click();

但是如果你想从头部找到一个链接,在上面的循环中:

List<WebElement> elements = ff.findElements(By.xpath("//h2"));
for(WebElement element : elements) {
    if("Download".equals(element.getText()) {
        // get the parent <a> element and click on it
        element.findElement(By.xpath("..")).click();
    }
}

答案 2 :(得分:0)

嗨,请按以下方式进行操作

WebDriver driver = new FirefoxDriver();
driver.get("http://www.seleniumhq.org");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
// Hi please do it like below ,take all H2 tag inside the list

List<WebElement> myH2Tags = driver.findElements(By.tagName("h2"));  // you can put any tag name as per your requirement

for(int i=0;i<myH2Tags.size();i++){
    System.out.println("Value of My H2 Tags are : " + myH2Tags.get(i).getText());
    if(myH2Tags.get(i).getText().equals("Selenium News")){ // you can replace this with drop down value
    myH2Tags.get(i).click();
        }
// to avoid stale element exception you have to re identify the elements
            myH2Tags = driver.findElements(By.tagName("h2"));
        }