2017-09-20 4 views
1

Ich versuche, eine PDF in einer Seite mit der rechten Maustaste herunterzuladen und "Speichern unter" auszuwählen, aber ich mache eindeutig nichts richtig, da das Kontextmenü erscheint aber der Pfeil bewegt sich nicht.sendKeysToActiveElement funktioniert nicht wie erwartet, RSelenium

Jeder Rat willkommen.

EDIT: Sorry, ich bin neu hier, dies ist ein leichter reproduzierbares Beispiel als das Original darunter. In diesem Beispiel versuche ich mit der rechten Maustaste zu klicken, den Pfeil nach unten zu "Speichern unter" und drücke Enter. Rechtsklick funktioniert, aber sonst nichts.

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")) 

ALTES BEISPIEL UNTEN. Öffnet einen Browser, navigiert zu einer Formularseite, wählt alle Ergebnisse aus 2016 aus und klickt in der ersten Zeile auf die Schaltfläche "Dokument anzeigen", um die Seite für die PDF-Datei zu öffnen. :

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") 

Das alles funktioniert und ich bin in der richtigen Fenstertab arbeiten, aber nach dem folgenden Rechtsklick, die das Rechtsklick-Menü öffnet, wird die letzte Zeile nicht tun, was ich erwartete, zu, das ist "Speichern unter" markieren und drücken Sie "Enter". Stattdessen schaltet der ganze Bildschirm nach unten, als ob ein Abwärtspfeil passiert wäre, dann nichts weiter.

Antwort

0

Sie können nicht mit dem Speichern als Dialog interagieren. Sie können eine Datei wie folgt speichern (Win 10 Dateipfad usw. Betriebssystemabhängig):

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() 
+0

Erstaunlich, diese Antwort kam, als ich diese lange und verwirrende Bearbeitung komponierte. Funktioniert ein Charme, und ich würde gerne mehr darüber wissen, was mit dieser eCaps-Variable los ist. – johnrroby

+0

Das Argument für zusätzliche Funktionen (eCap) übergibt dem Chrome-Browser eine Liste mit Optionen. Es teilt ihm mit, dass Dateien automatisch in das angegebene Verzeichnis heruntergeladen werden sollen. Ab Chrom 57 hat sich die Funktionsweise geändert. Mehr Details hier https://stackoverflow.com/questions/31672897/how-to-download-a-pdf-file-in-chrome-using-selenium-webdriver – jdharrison

Verwandte Themen