2017-02-24 63 views
0

我需要將pdf保存到文件。問題是,在我的頁面上點擊Print按鈕後,它將我重定向到一個帶有pdf的新頁面。這有利於用戶,因爲它是一個標準的Chrome PDF查看器,但問題是,我無法點擊download按鈕,因爲我能看到的唯一的HTML是這樣的:使用量角器將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在量角器?

回答

-1

保存pdf涉及使用HTML 5 download屬性。我們可以創建一個a元素,比單擊它時會爲我們節省pdf。

基本上,我們需要建立我們自己的<a download="ourfile.pdf" href="blob:ourPath">其中download是我們要保存的文件名,href是我們pdf的URL,或embedsrc屬性。

我們可以使用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\\', 
      } 
     } 
    }, 
    }