Не могу найти и нажать на динамический элемент с RSelenium - PullRequest
0 голосов
/ 18 апреля 2019

Я использую RSelenium, чтобы нажимать на динамический элемент после поиска на этой веб-странице: http://www.in.gov.br/web/guest/inicio.

Каждый раз, когда я ищу слово, я хотел бы найти слова / ссылку 'Ministério Da Educação' (это португальский эквивалент Министерства образования) в правой части страницы результатов и нажмите на нее.

enter image description here

Я использовал функцию inspect element из Google Chrome, но мне не удалось найти и щелкнуть этот элемент.Я уже пробовал использовать xpath, css selector, id ...

enter image description here

enter image description here

Я использую следующий код:

## search parameters 
string_search <- "contrato"
date_search <- format(
  as.Date("17/04/2019", "%d/%m/%Y"), 
  "%d/%m/%Y") #brazilian format

## start Selenium driver
library(RSelenium)
selCommand <- wdman::selenium(
  jvmargs = c("-Dwebdriver.firefox.verboseLogging=true"), 
  retcommand = TRUE)
shell(selCommand, wait = FALSE, minimized = TRUE) # for windows
# system(selCommand) # for Linux
remDr <- remoteDriver(port = 4567L, browserName = "firefox")
remDr$open()

## navigation & search
remDr$navigate("http://www.in.gov.br/web/guest/inicio")
Sys.sleep(5)

# from date
datefromkey<-remDr$findElement(using = 'css', "#calendario_advanced_from")
datefromkey$clickElement()
datefromkey$sendKeysToElement(list(key = "enter"))
datefromkey$clearElement()
datefromkey$sendKeysToElement(list(date_search))
datefromkey$sendKeysToElement(list(key = "enter"))

# to date
datetokey<-remDr$findElement(using = 'css', "#calendario_advanced_to")
datetokey$clickElement()
datetokey$sendKeysToElement(list(key = "enter"))
datetokey$clearElement()
datetokey$sendKeysToElement(list(date_search))
datetokey$sendKeysToElement(list(key = "enter"))

# string to search
wordkey<-remDr$findElement(using = 'css', "#input-advanced_search")
wordkey$sendKeysToElement(list('"', string_search, '"'))

# click search button
press_button <- remDr$findElement(using = 'class', "btn")
press_button$clickElement()

Вот где я борюсь:

1) первая попытка: использование более широкого тега

# using a broader tag
categorykey <- remDr$findElement(using = 'id', '_3_facetNavigation')
categorykey$getElementText()

С getElementText() Я вижу, что "Ministério da Educação" есть, но я не знаю, как нажать на ссылку.

2) вторая попытка: с помощью xpath

categorykey <- remDr$findElement('xpath', '//li 
[@id="yui_patched_v3_11_0_1_1555545676970_404"]/text()')

Возвращает ошибку.Селен не может найти элемент.

1 Ответ

0 голосов
/ 21 апреля 2019

Сам нашел решение после просмотра этого видео на YouTube: Как найти динамические элементы в Selenium Webdriver - XPATH Tutorial

Код будет выглядеть так:

categorykey <-remDr$findElement('xpath', '//*[contains(@data-value,"ministério da 
educação")]')

categorykey$getElementText()
# just to see if it's right

categorykey$clickElement()
...