2

我是 Selenium 的新手,在通过 XPath 查找元素时遇到问题。我试图处理这个问题,但花了太多时间,它仍然不起作用。

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

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

例子

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

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

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

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

4

2 回答 2

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)']"));
于 2013-05-26T09:33:07.503 回答
1

首先,xpath 函数text()必须用小写字母编写。
此外,您要查找的链接条目不是第​​三 (3) 个 div。

因为直接下载是div中class="right"的链接。
请试试这个:

"//div[div/a[text()='Firefox 22.0 (Beta 2)']]/div[@class='right']/a"
于 2013-05-26T09:34:20.183 回答