如何点击chrome的扩展按钮或使用Rselenium通过快捷键激活它

问题描述 投票:0回答:1

任何人都可以帮我弄清楚如何使用 RSelenium 激活 chrome 扩展吗?

扩展位于浏览器的选项卡中,因此没有可以使用 R-selenium 调用的 HTML 元素来激活它们。

这篇post建议使用快捷方式,但该建议没有提供如何执行此操作的代码。

目前,我有以下代码,允许在 Chrome 中安装扩展程序,然后导航到给定页面,在该页面中可以激活扩展程序。

library(tidyverse)
library(RSelenium)
library(rvest)
library(httr)
library(netstat)
library(xpectr)


Drivers=binman::list_versions("chromedriver")
Drivers=Drivers$win32
nDrivers=length(Drivers)
Chromeversion=Drivers[nDrivers]


eCaps <- list(
  chromeOptions = 
    list(prefs = list("download.prompt_for_download" = FALSE,
                  "download.directory_upgrade" = TRUE,
                  "plugins.always_open_pdf_externally"= TRUE)
))



rD <- rsDriver(browser = "chrome", port = free_port(), chromever  = Chromeversion, extraCapabilities = eCaps, verbose = F) 
remDr <- rD$client

##Install extension
  remDr$navigate("https://chromewebstore.google.com/detail/zotero-connector/ekhagklcjbdpajgpjgmbionohlpdbjgc")
AddExtensionButton=search_box <- remDr$findElement("class", "UywwFc-vQzf8d")
AddExtensionButton$clickElement()

#YOU WILL NEED TO CLICK ON "ADD EXTENSION MANUALLY", AS THAT WINDOW DID NOT HAVE ELEMENT EITHER.

#Activate extension on a given page
  URL="https://www.sciencedirect.com/science/article/abs/pii/S095506741300029X"
remDr$navigate(URL)

##select the main body of the page
elem <- remDr$findElement("css", "body")

##In the body of the page click control+shift+s, which is the shortcut that opens the extension. The key I used were found here names(selKeys)
  elem$sendKeysToElement(list(key = 'control', key = 'shift',  's'))


#I tried the above command as shown below with no luck.
elem$sendKeysToElement(list( '\ue009\ue008\u0073'))
html r google-chrome selenium-webdriver rselenium
1个回答
0
投票

您创建的

remDr
变量是一个“远程驱动程序”,它是一个处理与后台运行的浏览器通信的对象。您不想在那里发送密钥,您想将它们发送到正在显示的网页中的某个对象。

根据网页的不同,这可能是一个特定的字段(例如登录页面中的用户名字段),或者更大的字段。通常您会使用

elem <- remDr$findElement(...)
查找网页元素,然后使用
elem$sendKeysToElement(...)
发送它们。

我不确定您网页上的哪个元素将处理这些按键。我猜这样的事情会起作用:

elem <- remDr$findElement("xpath", "//body")
elem$sendKeysToElement(list(key = 'control', key = 'shift',  's'))

但你可能需要尝试第一行。

© www.soinside.com 2019 - 2024. All rights reserved.