如何区分selenium webdriver中的图像链接和href链接?

时间:2016-04-22 16:43:00

标签: java selenium webdriver

我想在selenium webdriver中获取维基百科主页的链接名称。在主页的底部有一个表,其中包含维基百科姐妹项目的链接,如Media-wiki,meta wiki等。但在运行代码后,我得到了24个链接。但在网页上只有12个链接。我怀疑它是在拍摄图像的链接。

包tcsWebmail;

import java.io.File;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class WikiPediaLinks {

public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("https://en.wikipedia.org/wiki/Main_Page");
System.out.println(driver.getTitle());

WebElement Block=driver.findElement(By.xpath("//*[@id='mp-sister']/table//a[not(img)]"));

List<WebElement> Links= Block.findElements((By.tagName("a")));
System.out.println("Printing the no of items in block");
int i=0;
for ( i=0;i<Links.size();i++){
System.out.println(Links.get(i).getText());
}
System.out.println("The no of items are"+Links.size());
driver.quit();
}
}

2 个答案:

答案 0 :(得分:0)

您的XPath包含您怀疑的图像。要获得不包含后代a的{​​{1}},您可以在下面使用XPath:

img

//*[@id='mp-sister']/table//a[not(img)]

见下面的代码:

//*[@id='mp-sister']/table//a[not(descendant::*[local-name() = 'img'])]

答案 1 :(得分:0)

In for loop put another condition to check to validate imgage (img) or link (href)

List<WebElement> Links= Block.findElements((By.tagName("a")));
System.out.println("Printing the no of items in block");
for ( int i=0;i<Links.size();i++)
{
if(Links.get(i).getAttribute("href").contains("http://")
{System.out.println(Links.get(i).getText());
}
driver.quit();
}
}