2016-04-22 12 views
0

私はselenium webdriverでwikipediaのホームページのリンクの名前を取得しようとしています。ホームページには、下部にウィキペディアの姉妹プロジェクト(Media-wiki、メタウィキなど)のリンクが入ったテーブルがあります。しかし、コードを実行した後、私は24のリンクを取得しています。しかし、ウェブページにはわずか12のリンクがあります。私の疑惑は、画像のリンクも取っていることです。selenium webdriverの画像リンクとhrefリンクを区別する方法は?

パッケージ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

ますあなたのコードを忘れてください:_D – fabersky

+0

@fabesky私はちょうど追加しました。前に書式設定の問題を追加できませんでした。 –

答えて

0

XPathには、疑わしい画像が含まれています。子孫imgを含まないaを得るためには、次のことができ、以下のXPathを使用する:

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

または

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

を、以下を参照してくださいコード:

List<WebElement> Links= driver.findElements(By.xpath("//*[@id='mp-sister']/table//a[not(img)]")); 
+0

答えのための@Buabanに感謝します。しかし、あなたが言及した両方のxpathを使用した後、リストは0の項目数を返しています。 –

+0

@amlandey最新のコードで質問を更新できますか?問題が別の行にあるように、私のXpathが正しいと確信しています。 – Buaban

+0

@amlandey私は答えにコードを追加しました。あなたはブロックを取得する必要はありません、ちょうどワンショットでリンクを取得します。 – Buaban

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(); 
} 
} 
関連する問題