RSelenium无法通过向下键滚动选择,如何选中Weekly选项?
解决RSelenium无法选中“Weekly”选项的问题
问题分析
直接在Chrome中点击时间框架选择器后按一次向下键再回车可以选中“Weekly”,但RSelenium中无法复现该操作,核心原因是下拉菜单弹出后,焦点未自动定位到选项列表,导致向body发送按键事件无法作用于目标选项。此外,页面可能存在的Cookie弹窗也会干扰元素交互。
解决方案
放弃依赖键盘按键操作,改为直接定位“Weekly”选项元素并点击,同时添加Cookie弹窗处理和元素滚动逻辑,提升稳定性:
link <- "https://www.investing.com/commodities/copper-historical-data" rD <- rsDriver(browser="chrome", verbose=F, chromever = "108.0.5359.22") remDr <- rD[["client"]] remDr$navigate(link) # 处理Cookie弹窗(若存在) tryCatch({ cookie_btn <- remDr$findElement(using = "css", value = "#onetrust-accept-btn-handler") cookie_btn$clickElement() }, error = function(e) { # 无弹窗时跳过 }) # 定位时间框架选择器并滚动到可见区域 time_frame <- remDr$findElement(using = 'id', value = 'history-timeframe-selector') time_frame$executeScript("arguments[0].scrollIntoView(true);") time_frame$clickElement() # 等待下拉菜单加载,然后定位并点击“Weekly”选项 Sys.sleep(1) weekly_option <- remDr$findElement(using = "xpath", value = "//li[text()='Weekly']") weekly_option$clickElement() # 后续操作... # 关闭浏览器 remDr$close() rD$server$stop()
关键改进点
- 直接定位目标元素:通过XPath精准匹配“Weekly”选项文本,避免依赖焦点和键盘事件的不确定性
- Cookie弹窗处理:防止弹窗遮挡元素导致交互失败
- 滚动到可见区域:确保元素在视窗内,避免点击失效
- 等待加载:添加短暂等待确保下拉菜单完全渲染
内容的提问来源于stack exchange,提问作者Jovan
相关产品推荐
相关产品推荐

