sendKeysToActiveElement 未按预期运行,RSelenium

sendKeysToActiveElement not functioning as expected, RSelenium

我试图通过右键单击并选择 "save as" 在页面中下载 PDF,但我显然做错了什么,因为右键单击菜单弹出但箭头移动不会发生。

欢迎任何建议。

编辑:抱歉,我是新来的,这是一个比下面的原始示例更容易重现的示例。在此示例中,我尝试右键单击,向下箭头指向 "save as" 并按回车键。右键单击有效,但没有别的。

library(RSelenium)
driver <- rsDriver()
remDr <- driver[["client"]]
remDr$navigate("https://www.google.com/")
webElem <- remDr$findElement("css", "html")
webElem$click(2)
webElem$sendKeysToElement(list(key = "down_arrow", key = "down_arrow", key = "enter"))

下面是旧示例。打开浏览器,导航到表单页面,选择 2016 年的所有结果,然后单击第一行中的 "view document" 按钮打开 PDF 页面。 :

driver <- rsDriver()
remDr <- driver[["client"]]
remDr$navigate("https://portal.sos.state.nm.us/FinancialDisclosure/search.aspx")
webElem <- remDr$findElement(using = 'id', value = "ContentPlaceHolder1_ddlYear")
webElem$sendKeysToElement(list("2016", key = "enter"))
webElem <- remDr$findElement(using = 'id', value = "ContentPlaceHolder1_btnSearch")
webElem$clickElement()
webElem <- remDr$findElement(using = 'id', value = "ContentPlaceHolder1_gvSummary_btnShow_0")
webElem$getWindowHandles()
webElem$getCurrentWindowHandle() #Here I identify the window handle of the popup and paste it in "x" below:
webElem$switchToWindow("x")

一切正常,我在正确的 window 选项卡中工作,但是在以下右键单击确实打开了右键单击菜单之后,最后一行没有按照我的预期进行到,这是突出显示 "save as" 并点击 "enter." 相反,整个屏幕向下移动,就好像发生了一个向下箭头,然后没有别的。

webElem$click(2)
webElem$sendKeysToActiveElement(list(key = 'down_arrow', key = 'down_arrow', key = 'enter'))

您将无法与另存为对话框进行交互。您可以按如下方式保存文件(win 10 文件路径等 OS 依赖):

library(RSelenium)
eCaps <- list(
  chromeOptions = 
    list(prefs = list(
      "profile.default_content_settings.popups" = 0L,
      "download.prompt_for_download" = FALSE,
      "download.default_directory" = "C:/temp/chromeDL",
      "download.directory_upgrade" = TRUE,
      "plugins.always_open_pdf_externally" = TRUE
    )
    )
)
driver <- rsDriver(extraCapabilities = eCaps)
remDr <- driver[["client"]]
remDr$navigate("https://portal.sos.state.nm.us/FinancialDisclosure/search.aspx")
webElem <- remDr$findElement(using = 'id', value = "ContentPlaceHolder1_ddlYear")
webElem$sendKeysToElement(list("2016", key = "enter"))
webElem <- remDr$findElement(using = 'id', value = "ContentPlaceHolder1_btnSearch")
webElem$clickElement()
webElem <- remDr$findElement(using = 'id', value = "ContentPlaceHolder1_gvSummary_btnShow_0")
webElem$clickElement()

file.rename("C:/temp/chromeDL/FDSDocument.ashx", 
            "C:/temp/chromeDL/testpdf1.pdf")

....
....
# clean up
rm(driver)
gc()