2011-08-04 18 views
0

我需要找到任何額外的鏈接並將其打印出來。我開始做:需要打印出selenium中一個側邊欄上的所有鏈接(xpath?)

get_xpath_count('//li/a') 

並將其與包含側邊欄的所有鏈接的名稱的數組的大小進行比較。當計數過高/過低時,我需要打印出所有額外/缺失的鏈接。我想列出一個名稱列表,以便將其與數組進行比較。我試過了一些像get_text('//li/a')這樣的東西,它返回第一個的名字。 get_text('//li/a[1])也一樣,但其他索引不會返回任何內容。

任何想法?另外,我需要鏈接上顯示的名稱,而不是實際的href。

編輯*另外,我很新的硒和Xpath。請讓我知道,如果有我需要的信息,或只是對我正在做的這個方式的任何建議。

回答

0

我已經能夠使用CSS element locators得到這個工作。由於我使用CSS選擇器比Xpath更頻繁,因此我發現使用Selenium時也更容易。

$selenium->get_text("css=li a:nth-child(1)") 
$selenium->get_text("css=li a:nth-child(2)") 
$selenium->get_text("css=li a:nth-child(...)") 
$selenium->get_text("css=li a:nth-child(n)") 
+0

這似乎並不完全正確。它會返回用於摺疊的鏈接旁邊的[ - ]圖標。 –

+0

沒有看到你正在使用的實際HTML,我很難給你一個完整的工作示例。你應該能夠根據需要修改CSS選擇器。 – CuriousCurmudgeon

+0

我討厭在這件事上糾纏你,但我試過了,沒有運氣。我不斷得到對我無意義的結果。這是html的一部分: –

0

使用

(//li/a)[$someNumber] 

這將讓你的$someNumber//li/a的XML文檔中的文本。

爲了知道什麼值用來替代$someNumber用,你需要知道這些元素的總數:

count(//li/a) 
0

這是JAVA。您可以在perl中使用相同的概念

int totCountInPage=selenium.getXpathCount(//li/a); 
for(int count=1;count<=totCountInPage;count++) 
System.out.println(selenium.getText("xpath=//li[count]/a")); 

這應該在所有li標籤下的錨鏈接中打印文本。