RSelenium: найти ссылку с помощью Xpath

Я хочу найти все ссылки на файлы PDF на странице с RSelenium и 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

Я неправильно понимаю синтаксис?


person CptNemo    schedule 28.10.2015    source источник


Ответы (1)


В вашем выражении есть синтаксическая ошибка, в которой отсутствует закрывающий ]:

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

Но даже если вы это исправите, вы получите ошибку, на этот раз другую. Это связано с тем, что выражения XPath в селене должны указывать на веб-элементы, а не на атрибуты элементов. Другими словами, используйте //a[contains(@href,'.pdf')], чтобы найти элемент, а затем метод get_attribute, чтобы получить значение атрибута href.


Обратите внимание, что вы также можете найти ссылку по тексту ссылки:

remDr$findElement(using = "link text", "PDF")
person alecxe    schedule 28.10.2015