使用RSelenium获取元素文本

时间:2017-05-07 16:06:54

标签: r selenium 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进行调试时,看起来好像是&#39;问题&#39;列表已正确填充所有&#39;问题&#39;要素;问题&#39;使用第一个问题&#39;正确填充项目。列表中的元素;但是下一行代码的许多变体,旨在获取问题元素中的文本,似乎都失败了,给出了以下错误:

Error in evalq({ : attempt to apply non-function

错误可能来自代码的不同部分,但不太可能,因为注释掉该行似乎会让其他所有内容完美无缺。

我非常感谢你们和女士们可以提供的任何帮助。我使用RSelenium在R中编程 - 你可能会说,我是R的新手,尽管我在其他环境中使用Selenium的经验非常有限。

提前感谢您的想法!

1 个答案:

答案 0 :(得分:4)

question没有名为getElementText的函数;它是list对象而不是webElement对象。您需要[[而不是[ - 请查看此示例:

library(RSelenium)
rD <- rsDriver(port=4444L, browser = "phantomjs")
remDr <- rD[["client"]]
remDr$navigate(
  "http://stackoverflow.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()