2014-03-26 71 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