无法使用 RSelenium 找到并单击动态元素

Can't find and click on a dynamic element with RSelenium

我在搜索此网页后使用 RSelenium 单击动态元素:http://www.in.gov.br/web/guest/inicio

每次搜索一个词,我都想找到words/link'Ministério Da Educação'(它是教育部的葡萄牙语)在结果网页的右侧并单击它。

我使用了 Google Chrome 的 检查元素 功能,但我没有成功找到并单击该元素。我已经尝试过使用 xpath,css 选择器,id ...

我正在使用以下代码:

## 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" 在那里,但我不知道如何单击 link。

2) 第二次尝试:使用 xpath

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

它 returns 一个错误。 Selenium 找不到元素。

在 YouTube 上观看此视频后自己找到了解决方案: How to locate Dynamic Elements in 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()