5

我想在带有RSelenium和的页面中找到所有指向 PDF 文件的链接Xpath

请考虑

require(RSelenium)
RSelenium::checkForServer()

RSelenium::startServer()

remDr <- remoteDriver()
remDr$open()

remDr$navigate("https://cran.r-project.org/manuals.html")

在页面中有多个指向 PDF 文件的链接,例如

<a href="doc/manuals/r-release/R-intro.pdf">PDF</a>

但我的第一次尝试

remDr$findElement(using = "xpath", "//a[contains(@href,'.pdf')/@href")

产生以下错误

Error:   Summary: InvalidSelector
     Detail: Argument was an invalid selector (e.g. XPath/CSS).
     class: org.openqa.selenium.InvalidSelectorException

我的语法错了吗?

4

1 回答 1

13

您的表达式中存在语法错误,缺少结束符]

//a[contains(@href,'.pdf')]/@href
                      HERE^

但是,即使你修复了它,你也会得到一个错误——这次是一个不同的错误。这是因为 selenium 中的 XPath 表达式必须指向 Web 元素而不是元素属性。换句话说,使用//a[contains(@href,'.pdf')]查找元素然后get_attribute方法获取href属性值。


请注意,您还可以通过链接文本找到链接:

remDr$findElement(using = "link text", "PDF")
于 2015-10-28T17:01:47.057 回答