我尝试点击进入谷歌搜索结果的下一页,使用以下代码:
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]])
答案 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