Я пытаюсь получить некоторые навыки скребка с RSelenium
, и я сталкиваюсь с трудностью.
Я хочу выбрать языки для комментариев на этой странице .Но когда появляется всплывающий список переключателей, мне удается щелкнуть некоторые из них, а не другие.Я думаю, что я получил элементы правильно, хотя.Вот что я попробовал:
library(RSelenium)
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4445L,
browserName = "firefox"
)
url <- "https://www.tripadvisor.com/Restaurant_Review-g187438-d12718258-Reviews-Prohobitox-Malaga_Costa_del_Sol_Province_of_Malaga_Andalucia.html"
remDr$navigate(url)
# click more language popup
webElems <- remDr$findElements(using = "css selector", ".taLnk") # taLnk is for dropdown like
webElemstext <- unlist(lapply(webElems, function(x) {x$getElementText()}))
webElems[[which(webElemstext == "More languages")]]$clickElement()
Я пытаюсь получить переключатели таким образом:
langues <- remDr$findElements(using = "class", "ui_radio")
langues_txt <- unlist(lapply(langues, function(x) {x$getElementText()}))
> langues_txt
[1] "All languages" "English (120)" "Spanish (66)" "Norwegian (25)" "All languages"
[6] "English (120)" "Spanish (66)" "Norwegian (25)" "Dutch (22)" "Swedish (13)"
[11] "French (12)" "German (10)" "Italian (7)" "Danish (3)" "Finnish (2)"
[16] "Portuguese (1)"
Странно то, что я могу нажать на последнюю радиопереключатель, но не на другие, и я не понимаю.Если я попробую нажать финский:
langues[[14]]$clickElement()
remDr$screenshot(display = TRUE)
, ничего не произойдет.Но с португальским:
langues[[16]]$clickElement()
remDr$screenshot(display = TRUE)
Вот это сработало.Я не вижу никакой разницы между этими двумя ситуациями, поэтому я не нахожу решение, чтобы щелкнуть какую-либо радиокнопку во всплывающем окне.
Есть идеи?
edit
Я пытался нажать на все из них.Я могу нажать «Все языки», «Английский», «Норвежский» и «Португальский».Ни один из остальных не работает, даже с предлагаемым решением:
Решение BigDataScientist
Я загрузил всплывающее меню и удалил куки раньше:
remDr$deleteAllCookies()
remDr$navigate(url)
# click more language
webElems <- remDr$findElements(using = "css selector", ".taLnk") # taLnk est le css pour etendre des menus.
webElemstext <- unlist(lapply(webElems, function(x) {x$getElementText()}))
webElems[[which(webElemstext == "More languages")]]$clickElement()
Здесьэто решение дано
langues <- remDr$findElements(
using = "xpath",
value = "/html/body/div/div/div/div[@class = 'ui_radio item']"
)
langues_txt <- unlist(lapply(langues, function(x) {x$getElementText()}))
langues[[8]]$clickElement() # It should be german
remDr$screenshot(display = TRUE)
вот результат:
Действительно, здесь я получаю только 12 языков, но явсе еще не могу нажать на нужные мне кнопки.
решение суппутури
У меня тоже не работает: я пробовал оба:
langElement <- remDr$findElement(using = "css", ".more-options .ui_radio.item:nth-of-type(8) input")
langElement$clickElement()
remDr$screenshot(display = TRUE)
и
langElement <- remDr$findElement(using = "css", ".more-options div[data-tracker='German'] input")
# click on language radio button
langElement$clickElement()
remDr$screenshot(display = TRUE)
никто не работал: