我是Selenium的新手,有一个问题是通过XPath找到一个元素。我试图处理这个问题,但花了太多时间在它上面,它仍然无法正常工作。
我正在尝试从this网站自动下载文件。
我正在搜索包含版本名称的元素,之后我需要相应地点击下载图标。
我正在编写以下代码以便找到元素
var element1 = driver.FindElement(By.XPath("//*[@id='versiontable']/div[3]/a[Text()='Firefox 22.0 (Beta 2)']"));
但是,它不起作用,找不到元素。
之后我需要相应地点击下载图标。我不知道如何点击与当前版本的Firefox相关的元素。有什么建议吗?
答案 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"