r - 使用 RSelenium 找不到并单击动态元素
问题描述
在此网页上搜索后,我使用 RSelenium 单击动态元素:http: //www.in.gov.br/web/guest/inicio。
每次我搜索一个词时,我都想在结果网页的右侧找到词/链接“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()
我看到“Ministério da Educação getElementText()
”在那里,但我不知道如何点击链接。
2)第二次尝试:使用xpath
categorykey <- remDr$findElement('xpath', '//li
[@id="yui_patched_v3_11_0_1_1555545676970_404"]/text()')
它返回一个错误。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()
推荐阅读
- python - RobotFramework - 将查询结果与另一个文件的结果进行比较
- sql - 基于值格式的条件连接
- android - 从 android viewmodel 调用 notifyDataSetChanged()
- git - 我应该如何使用 .gitignore 隐藏我的 googleservices.json 文件?
- html - 在父容器上使用显示 flex 时显示 flex 不起作用
- autodesk-forge - 为每个选定对象使用不同颜色的多选
- apache-spark - 从以下代码如何转换 JavaRDD
到 DataFrame 或 DataSet - javascript - Jquery 检查 Onclick 元素
- laravel-7 - 使用 laravel socialite 登录社交创建密码
- php - 从数组构建查询字符串时点替换为下划线