Получить текст элемента с помощью RSelenium
Я боролся со следующими строками кода уже несколько часов, и мне все еще кажется, что я не приблизился к решению. Мой код выглядит следующим образом:
#create a list of all the question elements on the page
questions <- remDr$findElements(using = 'xpath', "//div[@class='question-text']")
#get the first question element in the list
question <- questions[1]
#get the text of the question element
question$getElementText()
Когда я отлаживаю с помощью RStudio, создается впечатление, что список "вопросов" заполнен правильно всеми элементами "вопроса"; пункт "вопрос" правильно заполнен первым элементом "вопрос" в списке; но многие изменения в следующей строке кода, предназначенные для получения текста в элементе вопроса, кажутся неудачными, приводя к следующей ошибке:
Error in evalq({ : attempt to apply non-function
Возможно, что ошибка происходит из другой части кода, но очень маловероятно, так как комментирование этой строки, кажется, оставляет все остальное работающим отлично.
Я был бы очень признателен за любую помощь, которую вы, ребята и девочки, могли бы оказать. Я программирую на R с использованием RSelenium - как вы, вероятно, можете сказать, я новичок в R, хотя у меня очень ограниченный опыт использования Selenium в других средах.
Заранее спасибо за ваши мысли!
1 ответ
question
не имеет функции с именем getElementText
; это list
объект вместо webElement
объект. Тебе нужно [[
вместо [
- проверьте этот пример:
library(RSelenium)
rD <- rsDriver(port=4444L, browser = "phantomjs")
remDr <- rD[["client"]]
remDr$navigate(
"http://stackru.com/questions/43833649/get-element-text-using-rselenium")
elems <- remDr$findElements(using = 'xpath', "//a")
elem <- elems[1]
class(elem)
# [1] "list"
elem$getElementText()
# Error: attempt to apply non-function
Сейчас
elem <- elems[[1]]
class(elem)
# [1] "webElement"
elem$getElementText()
# [[1]]
# [1] "Stack Overflow"
elem$getElementText()[[1]]
# [1] "Stack Overflow"
remDr$close()
rD[["server"]]$stop()