我正在尝试阅读页面上的所有标题标记,并且只需要点击一个名为"标记为"的标题标记。 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"));
答案 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"));
}