簡體   English   中英

使用Python Selenium Webdriver捕獲PDF文件

[英]Capturing PDF files using Python Selenium Webdriver

我們使用python測試套件測試了內部開發的應用程序,該套件可通過Selenium WebDriver完成Web導航/交互。 我們的網絡測試的棘手部分是處理應用程序中的一系列pdf報告。 我們正在測試Firefox從v3.6升級到v16.0.1的計划升級,事實證明,由於firefox的temp文件夾的目錄結構發生了更改,因此無法再使用捕獲報告的方式。 我沒有寫原始的pdf捕獲代碼,但是我將對v16.0.1最終使用的代碼進行重構,所以我想知道是否存在比使用Python的Selenium Webdriver綁定保存pdf更好的方法。目前正在做。

以前,對於Firefox v3.6,單擊生成報告的鏈接后,我們將在“ C:\\ Documents and Settings \\\\ Local Settings \\ Temp \\ plugtmp”目錄中掃描pdf文件(具有特定的名稱約定),以被生成。 需要明確的是,我們不是從網頁本身保存報告,而是使用在firefox的Temp文件夾中生成的報告。

在Firefox 16.0.1中,單擊生成報告的鏈接后,將在文件“ C:\\ Documents and Settings \\\\ Local Settings \\ Temp \\ tmp * \\ cache *”中生成文件,文件名為隨機文件,結尾不為“ .pdf”。 如果使用與上一個類似的技術,則捕獲該文件會更加困難-每個瀏覽器都有一個不同的tmp ***文件夾,該文件夾具有一個充滿文件夾的緩存,其中的報告是使用隨機文件名生成的。

我能看到的最簡單的解決方案是直接保存pdf,但我還沒有找到一種方法來保存。

要使用與FF3.6中相同的方法(在Temp文件夾目錄中找到pdf),我認為我們需要執行以下操作:

  1. 找出哪個tmp ***文件夾屬於此特定瀏覽器實例(我們可以通過檢查實例化瀏覽器之前和之后存在的tmp ***文件夾來做到這一點)
  2. 在瀏覽器的緩存中查找在生成pdf報告后立即生成的文件(我們可以通過比較時間戳)
  3. 如果在緩存中生成了多個文件,則我們可能會根據大小排序並獲取最大的文件,因為pdf幾乎肯定是最大的臨時文件(盡管這看起來很不穩定,並且需要在實踐中進行測試) 。

我對這種方法感覺不太好,並且想知道是否有更好的方法來捕獲pdf文件。 誰能建議一個更好的方法?

注意:PDF文件的實際抓取仍然可以正常工作。

我們最終通過在測試前清除Firefox的臨時Internet文件,然后在生成報告后查找最近創建的文件來完成此任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM