Установите флажок с помощью RSelenium

Я хочу установить флажок «ВИЧ/СПИД» на этом URL-адресе: https://www.unodc.org/ngo/showExtendedSearch.do с помощью RSelenium

Это мой код до сих пор:

#load library
library(RSelenium)

#Check for serves and start server
RSelenium::checkForServer()
RSelenium::startServer()

#Specify remote driver
remDr <- RSelenium::remoteDriver(browserName='firefox')

#new remotedriver using default initialisation values
remoteDriver$new()

#Initialise session 
remDr$open()

#navigate to advanced search page

url <- "https://www.unodc.org/ngo/showExtendedSearch.do"
remDr$navigate(url)

#Click 'HIV/AIDS' filter
button <- remDr$findElements("name","HIV/Aids")

button$clickElement()

Ошибка при поиске элемента флажка «ВИЧ/СПИД». Теперь я получаю пустой список взамен. Я попытался использовать selectorgadget, что привело к следующему коду:

button <- remDr$findElements("css selector",'#applicationArea > form > table > tbody > tr > td > table:nth-child(7) > tbody > tr:nth-child(2) > td > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(4) > input[type="checkbox"]')
button$clickElement()

На этот раз я получил не пустой список, но и не желаемый веб-элемент.

Было бы очень полезно, если бы кто-нибудь мог помочь.

РЕДАКТИРОВАТЬ: мой последний код (с использованием селектора css), похоже, работает для других людей. Однако я получаю следующую ошибку: attempt to apply non-function, значит, что-то еще должно быть не так.


person user3387899    schedule 16.03.2016    source источник
comment
Я получаю ту же ошибку, что и с remDr$findElements("name","areaAidshiv"): «попытка применить нефункцию». Так что я предполагаю, что ошибка кроется где-то в другом месте.   -  person user3387899    schedule 16.03.2016


Ответы (2)


Код, который у вас сработал для меня:

library(RSelenium)

remDr <- remoteDriver(browserName = "firefox")
remDr$open()

url <- "https://www.unodc.org/ngo/showExtendedSearch.do"
remDr$navigate(url)

webElem <- remDr$findElement(using = 'css', 
                             value = '#applicationArea > form > table > tbody > tr > td > table:nth-child(7) > tbody > tr:nth-child(2) > td > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(4) > input[type="checkbox"]')

webElem$clickElement()

введите здесь описание изображения

person SymbolixAU    schedule 16.03.2016
comment
Я получаю сообщение об ошибке «попытка применить нефункцию», что является новым для меня. Что может быть не так? - person user3387899; 16.03.2016
comment
@user3387899 user3387899 У меня действительно нет хорошего предложения. Может быть, попробовать очистить свою среду и начать заново, просто используя этот фрагмент кода? - person SymbolixAU; 16.03.2016
comment
Хорошо, я просто скопировал и вставил ваш код, и теперь он работает... Значит, он должен иметь какое-то отношение к дополнительным фрагментам кода, которые я использовал, например checkForServer и т. д. Спасибо!!! - person user3387899; 16.03.2016
comment
@user3387899 user3387899 да, в прошлом у меня тоже были проблемы с этими серверными функциями. - person SymbolixAU; 16.03.2016

Попробуй это:

button <- remDr$findElements("name","areaAidshiv")
button$clickElement()
person Andersson    schedule 16.03.2016
comment
Спасибо за комментарий. Я пробовал это раньше, но это дало мне ошибку «попытка применить нефункцию». - person user3387899; 16.03.2016