使用量角器

时间:2017-02-24 10:51:46

标签: javascript pdf selenium-webdriver browser protractor

我需要将pdf保存到文件中。问题是,在我点击页面上的Print按钮后,它会将我重定向到包含pdf的新页面。这对用户来说很好,因为它是一个标准的chrome pdf查看器,但问题是我无法单击download按钮,因为我能看到的唯一的html是:

<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 个答案:

答案 0 :(得分:-1)

保存pdf涉及使用HTML 5 download属性。我们可以创建一个a元素,而不是在点击它时为我们保存pdf。

基本上我们需要创建自己的<a download="ourfile.pdf" href="blob:ourPath">,其中download是我们要保存的文件的名称,href是我们pdf的网址,或者src的{​​{1}}属性。

我们可以使用embed创建此元素。所以我们可以创建这样的东西:

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