2014-03-26 104 views
0

我需要找到Facebook的朋友名單,爲此我需要趕上登錄後的「名稱」按鈕(或選項卡)。我怎樣才能捕捉到一個使用x路徑。我所做的就是左鍵單擊代碼並使用螢火蟲單擊「copyxpath」選項。但它的工作。我使用Java,網絡驅動器...在此先感謝...找到xpath使用硒

我的代碼是:

@Test 
     public void testUntitled2() throws Exception { 
     driver.get(baseUrl + "/"); 
     driver.findElement(By.id("email")).clear(); 
     driver.findElement(By.id("email")).sendKeys("[email protected]"); 
     driver.findElement(By.id("pass")).clear(); 
     driver.findElement(By.id("pass")).sendKeys("password"); 
     driver.findElement(By.id("u_0_n")).click(); 
     driver.findElement(By.xpath(/html/body/div/div/div/div/div/div/div/ul/li/a/span)).click(); 
     driver.findElement(By.linkText("Friends336")).click(); 
     } 
+2

Facebook提供了一個穩定,易於使用和強大的API。不要刮他們的網站,它經常改變,並會破壞屏幕解析。 –

回答

0

如果你想點擊標題中的Facebook的用戶名的選項卡鏈接然後嘗試:

//span[@class='headerTinymanName'] 

相反的:

/html/body/div/div/div/div/div/div/div/ul/li/a/span 

使用XPath時,只要有可能,你應該利用類名等。 xpath工具有時會產生愚蠢的xpath。在我的臉書這個標籤鏈接有類headerTinymanName,所以選擇這個名字應該適合你。

或者你可以做到這一點而不使用XPath以及使用:By.className("headerTinymanName")

BTW:也儘量避免選擇由linktext的鏈接,特別是如果linktext的將是一些經常變化的,所以儘量選擇通過此鏈接類或ID:

driver.findElement(By.linkText("Friends336")).click(); 
+0

它適合你嗎? – donfuxx

+0

Re。通過linktext進行選擇;我想說,避免使用linktext選擇器是有點假定。在正確的上下文中使用時,選擇器的範圍都是有效的。說鏈接文本經常改變是對西維雅的應用做出假設。每個應用程序都不同,不同的方法是有效的。想象一下你創建一個記錄的測試,然後從列表中選擇該記錄。可能是選擇該記錄的唯一方法是按照您在創作中給出的名稱。如果是這樣,那麼通過linktext是一個完全有效的方法。 –

+0

在他的情況下,鏈接文本似乎包含朋友數。因此,如果fb用戶刪除或添加朋友,則linktext會更改。 @RobbieWareham – donfuxx