2017-02-24 8 views
0

pdfをファイルに保存する必要があります。問題は、私のページ上でPrintボタンをクリックすると、それがpdfを含む新しいページにリダイレクトされることです。ファイルを分度器で保存する

<body style="background-color: rgb(38,38,38); height: 100%; width: 100%; overflow: hidden; margin: 0"> 
    <embed width="100%" height="100%" name="plugin" id="plugin" src="blob:https://myPage.com/e8aa96bf-5a46-4f74-8df6-424881a8774a" type="application/pdf" internalinstanceid="34" title=""> 
</body> 

誰でもPDFファイルをダウンロードする方法を知っている:それは、標準的なクロムのPDFビューアですが、問題は、私が見ることができる唯一のHTMLはこれですので、私は、downloadボタンをクリックすることができないということですので、これはユーザーのために良いです分度器で?

答えて

-1

pdfを保存するには、HTML 5 download属性を使用する必要があります。 a要素を作成すると、その要素をクリックするとpdfを保存するよりも要素が作成されます。

基本的に我々はdownloadたちは、保存するファイルの名前で、hrefembedの私達のpdf、またはsrc属性のURLです<a download="ourfile.pdf" href="blob:ourPath">私たち自身を作成する必要があります。

browser.driver.executeScript();を使用してこの要素を作成できます。だから我々はこのようなものを作成することができます。

browser.getAllWindowHandles().then(function (handles) { 
    browser.switchTo().window(handles[1]).then(function() { 
     browser.ignoreSynchronization = true; 
     browser.driver.executeScript(`var a = document.createElement('a'); 
             a.href = arguments[0]; 
             a.id="downloadPdf"; 
             a.download = "abc.pdf"; 
             a.text="DOWNLOAD" 
             a.style="width:200px;height:200px;" 
             var b = document.getElementsByTagName('body')[0]; 
             b.insertBefore(a, b.firstChild); 
             `, 
      browser.driver.getCurrentUrl()).then(() => { 
       browser.driver.findElement(by.id('downloadPdf')).click(); 
       browser.ignoreSynchronization = false; 
      }); 
    }); 
}); 

私たちは、第二引数でurlを渡すとbodyの最初の要素として、私たちの新しい要素を挿入します。次に、新たに作成された要素を見つけてクリックします。

ファイルを保存する場所のパスを指定することもできます。これは、設定ファイルにdefault_directoryを設定することで行います。

capabilities: { 
    'browserName': 'chrome', 
    'chromeOptions': { 
     prefs: { 
      'download': { 
       'prompt_for_download': false, 
       'default_directory': 'C:\\your\\custom\\path\\', 
      } 
     } 
    }, 
    }