我想在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();
}
}
答案 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();
}
}