Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用selenium查找xpath_Selenium_Xpath - Fatal编程技术网

使用selenium查找xpath

使用selenium查找xpath,selenium,xpath,Selenium,Xpath,我需要找到Facebook的好友列表,为此我需要在登录后点击“姓名”按钮(或标签)。我怎样才能用x路径捕捉到那个。我所做的是左键单击代码,然后使用firebug单击“copyxpath”选项。但它是有效的。我正在使用java,web驱动程序…提前感谢 我的代码是: @Test public void testUntitled2() throws Exception { driver.get(baseUrl + "/"); driver.findElem

我需要找到Facebook的好友列表,为此我需要在登录后点击“姓名”按钮(或标签)。我怎样才能用x路径捕捉到那个。我所做的是左键单击代码,然后使用firebug单击“copyxpath”选项。但它是有效的。我正在使用java,web驱动程序…提前感谢

我的代码是:

@Test
      public void testUntitled2() throws Exception {
        driver.get(baseUrl + "/");
        driver.findElement(By.id("email")).clear();
        driver.findElement(By.id("email")).sendKeys("smallfishhh4@gmail.com");
        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();
      }

如果要单击标题中的facebook用户名选项卡链接,请尝试:

//span[@class='headerTinymanName']
而不是:

/html/body/div/div/div/div/div/div/div/ul/li/a/span
在使用xpath时,应尽可能利用类名等。xpath工具有时会生成愚蠢的xpath。在我的facebook上,这个标签链接有一个类
headertinmaname
,所以选择这个名字应该对你有用

或者,您也可以使用:
by.className(“headerTinymanName”)

顺便说一句:也尽量避免按链接文本选择链接,特别是当链接文本经常更改时,因此也尽量按类或id选择此链接:

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

重新。按链接文本选择;我想说避免使用链接文本选择器是一种假设。在正确的上下文中使用时,选择器的范围都是有效的。说linktext经常更改是在对sivea的应用进行假设。每个应用程序都是不同的,不同的方法是有效的。设想一个测试,您在其中创建一条记录,然后从列表中选择该记录。选择该记录的唯一方法可能是根据您在创建时提供的名称。如果是这样,那么通过linktext是一种完全有效的方法。在他的例子中,链接文本似乎包含了好友数。因此,如果fb用户删除或添加朋友,链接文本将发生变化@RobbieWareham谢谢你donfuxx,我在driver.findElement(By.id(“u_0_n”))停了下来。单击();所以请告诉我,对我来说,fb登录按钮有id
u_0_l
,所以id似乎不同(可能他们测试不同的样式或类似的东西)。尝试xpath,如:
//label[@id='loginbutton']/input
尝试查找不太可能更改且具有描述性的元素/属性
u_0_n
不是很有描述性,看起来有a-b测试或者类似的东西,activeFacebook提供了一个稳定、易于使用和健壮的API。不要刮他们的网站,它经常变化,会打破屏幕解析。