如何在RSelenium中使用快捷键?部分快捷键失效问题求助
在RSelenium中解决Firefox快捷键失效问题
针对你遇到的Ctrl+H(浏览历史)、Ctrl+Shift+R(强制刷新)快捷键失效,但Ctrl+A正常的问题,可以尝试以下几种解决方案:
1. 修正按键格式与焦点获取
部分快捷键失效可能是因为元素未获得焦点,或者按键大小写不正确:
library(RSelenium) rD <- rsDriver(browser = "firefox") remDr <- rD$client remDr$navigate("https://www.amazon.com") # 先获取body元素并点击使其获得焦点 elem <- remDr$findElement("xpath", "//body") elem$clickElement() # 发送Ctrl+H(注意h为小写) elem$sendKeysToElement(list(key = 'control', 'h')) # 发送Ctrl+Shift+R elem$sendKeysToElement(list(key = 'control', key = 'shift', 'r'))
2. 使用Action Chain模拟真实按键动作
Action Chain能更精准地模拟按住修饰键再按普通键的操作,避免按键不同步的问题:
# 模拟Ctrl+Shift+R强制刷新 remDr$actionChain()$keyDown(key = "control")$keyDown(key = "shift")$sendKeysToElement(elem, "r")$keyUp(key = "shift")$keyUp(key = "control")$perform() # 模拟Ctrl+H打开历史 remDr$actionChain()$keyDown(key = "control")$sendKeysToElement(elem, "h")$keyUp(key = "control")$perform()
3. 直接对活动元素发送按键
如果body元素仍无法响应,可尝试直接对当前活动元素发送快捷键:
# 获取当前有焦点的元素,若不存在则聚焦body tryCatch({ active_elem <- remDr$findElement("css", ":focus") }, error = function(e) { active_elem <- remDr$findElement("xpath", "//body") active_elem$clickElement() }) active_elem$sendKeysToElement(list(key = 'control', 'h'))
4. 检查Firefox配置
少数情况下Firefox的默认快捷键可能被修改,可在浏览器地址栏输入about:config,确认以下配置为默认值:
browser.shortcuts.bookmarks_menu_h:true(对应Ctrl+H)browser.shortcuts.reload:true(对应Ctrl+R,Ctrl+Shift+R依赖此配置)
内容的提问来源于stack exchange,提问作者Camilo
相关产品推荐
相关产品推荐

