使用Selenium,xpath找不到'text'元素

时间:2013-05-26 09:09:36

标签: testing xpath selenium automation webdriver

我是Selenium的新手,有一个问题是通过XPath找到一个元素。我试图处理这个问题,但花了太多时间在它上面,它仍然无法正常工作。

我正在尝试从this网站自动下载文件。

我正在搜索包含版本名称的元素,之后我需要相应地点击下载图标。

example

我正在编写以下代码以便找到元素

var element1 = driver.FindElement(By.XPath("//*[@id='versiontable']/div[3]/a[Text()='Firefox 22.0 (Beta 2)']"));

但是,它不起作用,找不到元素。

之后我需要相应地点击下载图标。我不知道如何点击与当前版本的Firefox相关的元素。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

为什么不使用By.linktext,对我来说似乎更容易?

driver.findElement(By.linkText("Firefox 22.0 (Beta 2)")).click(); 

但是,XPath无法正常工作的原因是它不适合网页的结构。 div[3]并不意味着一个接一个的层次结构中的三个div,但它意味着下一个层次结构级别中的第三个div。你需要这样的东西

var element1 = driver.FindElement(By.XPath("//*[@id='versiontable']/div/div/div/a[text()='Firefox 22.0 (Beta 2)']"));

答案 1 :(得分:1)

首先,xpath函数text()必须用小写字母书写 您正在寻找的链接条目也不是第三个(3)div。

因为直接下载是div中带有class =“right”的链接 请试试这个:

"//div[div/a[text()='Firefox 22.0 (Beta 2)']]/div[@class='right']/a"