2016-11-23 9 views
2

Selenium WebDriverを使用してファイルのダウンロード機能を自動化しようとしています。私はGoogle Chromeを使用しています。ダウンロードするファイルの種類はPDF形式です。 WebDriverがダウンロード(または印刷)リンクをクリックすると、ブラウザは直接PDFファイルをダウンロードするのではなく、PDFファイルのプレビューを表示します。どのように私はクロムドライバを直接PDFファイルをダウンロードすることができますか? 私は以下のコードを試してみましたが、運クロムドライバを使用してPDFファイルを直接ダウンロードしてください。

ChromeOptions options = new ChromeOptions(); 
Map<String,Object> preferences = new HashMap<>(); 
preferences.put("pdfjs.disabled", true); 
options.setExperimentalOption("prefs", preferences); 
System.setProperty("webdriver.chrome.driver", chromeDriverPath); 
WebDriver driver=new ChromeDriver(options); 

は、私が知っているこの質問はすでにthisを含め、StackOverflowの上で尋ねなかったが、これらのソリューションのどれも私のために働くありません。私が使用しています

- グーグルクロームv54.0.2840.99は、Chromedriverのv2.25とSelenium V3.0.1は

ダウンロード/印刷リンクの

HTMLは

enter image description here

+0

を次のようにJavaScriptを使用して行うことができ、ダウンロード/印刷要素

download="" target="_blank" 

に次の属性を追加することで解決することができるあなたの缶アプリケーションのHTMLまたはURLを表示しますか? – Buaban

答えて

2

この問題は、これが

WebElement printLink=driver.findElements(By.linkText("Print")).get(0); 
JavascriptExecutor js= (JavascriptExecutor) driver; 
js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])",printLink,"download",""); 
js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])",printLink,"target","_blank"); 
2

することができます下に表示されa要素の属性downloadを設定し、要素をクリックします。以下のコードを参照してください:

String script = "document.querySelector('td a[href*=\"/print/\"]').setAttribute('download','name-of-the-download-file-recommend-guid-or-timestamp.pdf');"; 
((JavascriptExecutor)driver).executeScript(script); 
driver.findElement(By.cssSelector("td a[href*='/print/']")).click(); 
+0

実際には、このソリューションは私のためには機能しませんが、問題を解決する方法がわかります – stackoverflow

関連する問題