如何解决如何从 RSelenium 中的 elementID 创建可点击的 webElement?
我正在尝试从这个 GIS site 下载数据,但我需要的一些按钮元素位于 shadow dom 中。
我的策略是运行一个 JS 脚本,该脚本使用 shadowRoot.querySelector
获取“elementID”并使用它指向我需要单击的按钮。我以为我可以使用 RSelenium::webElement
创建按钮元素,但是当我尝试点击它们时出现错误。
pacman::p_load(RSelenium,glue,dplyr,rvest)
driver <- rsDriver(browser = c("chrome"),chromever = "90.0.4430.24")
chrome <- driver$client
wisc_url <- "https://data.dhsgis.wi.gov/datasets/wi-dhs::covid-19-historical-data-by-county/about"
chrome$navigate(url = wisc_url)
Sys.sleep(5)
# open side panel
wisc_dl_panel_button <- chrome$findElement("css selector","#main-region > div.content-hero > div.content-hero-footer > div.content-footer.flex-row > div.content-footer-right > div.yielded > button")
wisc_dl_panel_button$clickElement()
# sometimes it needs time to create the file
Sys.sleep(120)
# get elementId from shadow DOM
wisc_dlopts_elt_id <- chrome$executeScript("return document.querySelector('hub-download-card').shadowRoot.querySelector('calcite-card').querySelector('calcite-dropdown')")[[1]]
wisc_dlopts_elt <- webElement(elementId = wisc_dlopts_elt_id,browserName = "chrome",port = 4567)
wisc_dlopts_elt$clickElement()
## Error in checkerror(res) :
## Undefined error in httr call. httr output: length(url) == 1 is not TRUE
我不认为这是我使用的特定元素 ID。我尝试了这个 create-webElement
方法和其他可以使用典型的 findElement
>> clickElement
方法点击的元素,但我仍然得到同样的错误。
解决方法
您是否尝试使用 findElements
?
如果你有 CSS 或 Xpath,你可以尝试这样的事情:
frames <- remDr$findElements("css selector",'your_css')
然后
frames[[1]]$clickElement()
这就是我经常做的..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。