2015-12-16 5 views
0

Я пытаюсь нажать, чтобы перейти на следующую страницу результатов поиска Google, используя следующий код:Нажмите кнопку Далее в результатах поиска Google

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 имели другой код?

Использование инспектировать я могу видеть, что исходный код для кнопки:

<a id="pnnext" class="pn" style="text-align:left" href="https://stackoverflow.com/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

Попробуйте XPATH .//*[@id='pnnext ']/span [2] – Shah

+0

@Shah Я попробовал этот 'webElem <- remDr $ findElement (используя =" xpath "," .//*[@ id =' pnnext ']/span [2] ")', но я take this error 'Ошибка: \t Резюме: NoSuchElement \t Деталь: Элемент не может быть размещен на странице с приведенными данными s earch параметры. ' – Piggy

ответ

1

Вы пытаетесь «щелкнуть» атрибут/строку, которая не работает так, как вы ее пытаетесь.

На этой линии вы захватывая ссылку в виде строки (которая не является WebElement для Selenium!)

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

спасибо. Вы дали e и идею сначала взять ссылку, с которой я хочу пойти по-другому. Я обновил свой вопрос с помощью обходного пути, который использовал. – Piggy

0

Не уверен, что клиент вы используете, но это может быть что вам нужно подождать(), пока не завершится запрос ajax. visibilityOfElementLocated #pnext

Смежные вопросы