由於Selenium只能控制DOM可以控制的東西(IDE只是運行JavaScript),所以不能拍攝屏幕截圖。唯一的選擇就是保存它,除非新HTML5的JavaScript在操作系統上啓動(我不知道)。我會讓你找到使用JavaScript在Google上保存PDF的代碼,但是這些信息會讓你開始。只需創建一個名爲Selenium.prototype.doLaunchAndSavePDF的自定義命令來啓動PDF並保存它。並讓你的「目標」參數成爲文件的路徑和名稱。我不確定Selenium如何通過向前(或向後)的斜槓傳遞JavaScript,所以請小心。祝你好運!
選項#1 - 如果使用Selenium IDE:
指定下硒IDE>選項(菜單)>選項(菜單選項)>常規選項卡用戶extensions.js文件,然後瀏覽到您的文件在「Selenium核心擴展」下。
選項#2 - 如果使用Selenium RC服務器:
如果你不使用的IDE和使用Selenium RC服務器與客戶端驅動程序(如JUnit的爲例),您必須指定的路徑當您在命令行上啓動Selenium RC Server時,帶有-userExtensions參數的* .js文件。但是你說你只是想使用IDE,所以我會忽略這一點。使用Selenium RC服務器需要相當多的其他設置。
Java的罐子硒的server.jar -userExtensions用戶extensions.js
=======================
我在自定義user-extensions.js文件中創建了以下自定義命令(JavaScript函數)。我必須在IDE找到它之前退出並重新啓動它。在IDE的「Command」字段中的「do」後鍵入所有內容以查找自定義命令。它看起來也向IDE添加了「customAlertAndWait」。
代碼在用戶extensions.js文件:
Selenium.prototype.doCustomAlert =函數(sTarget,S值){警報( '目標:' + sTarget + '...值:' + S值); };
硒IDE命令的詳細信息:
命令:customAlert
目標:自定義的警報目標
值:自定義警戒值
我給你下面一個開始。但是我沒有足夠的信息來100%回答你,並且我的答案被標記爲「答案」,除非你很慷慨。 (1)PDF是在HTTP處理程序中啓動的(作爲文件本身)還是(2)在對象 - 嚴格(或iFrame - 過渡)標記中,PDF流式傳輸到在對象/ iFrame內啓動的頁面就像PDFViewer.aspx或(3)一樣,它是否在其自己的頁面中啓動(如PDFViewer.aspx)?這對解決這項工作的解決方案將產生很大的影響。 – MacGyver
你是說PDF在Adobe應用程序中而不是在瀏覽器PDF插件中打開?如果是這樣,也許它只是一個MIME類型調整,以在第二個瀏覽器窗口中打開PDF,那麼您可以使用WebDriver窗口句柄方法跟蹤這兩個窗口並截取它(可能使用Sikuli?)。 – djangofan