按google搜索结果中的下一个按钮

时间:2015-12-16 10:08:15

标签: r selenium

我尝试点击进入谷歌搜索结果的下一页,使用以下代码:

library("RSelenium")
startServer()
checkForServer()
remDr <- remoteDriver()
remDr$open()
remDr$navigate("https://www.google.com/")
webElem <- remDr$findElement(using = "xpath", "//*/input[@id = 'lst-ib']")
webElem$sendKeysToElement(list("R Cran", "\uE007"))
webElem <- remDr$findElement(using = 'css selector', "#pnnext")
click <- webElem$getElementAttribute("href")
remDr$clickElement(click)

但是我收到以下错误:

Error in envRefInferField(x, what, getClass(class(x)), selfEnv) : 
  ‘clickElement’ is not a valid field or method name for reference class “remoteDriver”

点击下一步按钮,Google搜索结果会有不同的代码吗?

使用inspect我可以看到该按钮的源代码是:

<a id="pnnext" class="pn" style="text-align:left" href="/search?q=R+Cran&biw=1366&bih=657&ei=szhxVv_NMaHMygPW4pLQDg&start=10&sa=N">

最后对我有用的是:

library("RSelenium")
startServer()
checkForServer()
remDr <- remoteDriver()
remDr$open()
remDr$navigate("https://www.google.com/")
webElem <- remDr$findElement(using = "xpath", "//*/input[@id = 'lst-ib']")
Sys.sleep(5)
webElem$sendKeysToElement(list("R Cran", "\uE007"))
Sys.sleep(5)
link <- remDr$executeScript("return document.getElementById('pnnext').href;")
remDr$navigate(link[[1]])

2 个答案:

答案 0 :(得分:1)

您正试图“点击”某个属性/字符串,这与您尝试的方式不同。

在这一行上,您将链接作为字符串抓取(这不是Selenium的WebElement!)

click <- webElem$getElementAttribute("href")

然后在下一行中,您尝试通过实际需要WebElement的方法单击此链接/字符串

remDr$clickElement(click)

以下是您可以尝试的内容:

1)你可以尝试直接点击你的上一个WebElement(不是getAttribute):

webElem$clickElement()

2)您可以尝试导航到刚刚通过getAttribute的链接:

click <- webElem$getElementAttribute("href")
// change your last line to this
remDr$navigate(click)

答案 1 :(得分:0)

不确定您使用的是哪个客户端,但可能需要等待()直到ajax请求完成。 visibilityOfElementLocated #pnext