与Selenium中的PDF弹出窗口进行交互

时间:2011-07-12 17:06:56

标签: testing pdf selenium qa selenium-webdriver

我正在尝试测试一个页面,单击按钮会生成一个PDF格式的弹出窗口。 我希望selenium点击弹出窗口并截取屏幕截图或保存pdf。

我使用以下代码来获取所有窗口句柄以使用switchTo()命令,但是当我执行它时它只返回一个窗口。 Selenium似乎无法识别pdf弹出窗口。

Set<String> handles = driver.getWindowHandles();
//converts set to array
String[] array = handles.toArray(new String[0]);

System.out.println(Arrays.asList(array));

有没有其他方法可以切换到pdf弹出窗口?

1 个答案:

答案 0 :(得分:2)

因为Selenium只能控制DOM可以控制的东西(IDE只是运行JavaScript)所以你无法进行屏幕截图。你唯一的选择就是保存它,除非新的HTML5的JavaScript能够在操作系统上启动(我不知道)。我会让你找到使用JavaScript在Google上保存PDF的代码,但是这些信息可以帮助你入门。只需创建一个名为Selenium.prototype.doLaunchAndSavePDF的自定义命令,即可启动PDF并保存。并将“target”参数作为文件的路径和名称。我不确定Selenium如何将前向(或后向)斜杠传递给JavaScript,所以要小心。祝你好运!

选项#1 - 如果使用Selenium IDE:

在Selenium IDE&gt;下指定user-extensions.js文件。选项(菜单)&gt;选项(菜单选项)&gt; “常规”选项卡,然后在“Selenium Core Extensions”下浏览到您的文件。

选项#2 - 如果使用Selenium RC Server:

如果您没有使用IDE并将Selenium RC服务器与客户端驱动程序(例如JUnit)一起使用,则必须在启动Selenium RC Server时使用-userExtensions参数指定* .js文件的路径在命令行上。但是你说你只是想使用IDE,所以我忽略了这一点。使用Selenium RC服务器需要相当多的其他设置。

java -jar selenium-server.jar -userExtensions user-extensions.js

=======================

我在自定义的user-extensions.js文件中创建了以下自定义命令(JavaScript函数)。我必须先退出并重新启动IDE才能找到它。在IDE中的“命令”字段中的“do”之后键入所有内容以查找自定义命令。看起来它也向IDE添加了“customAlertAndWait”。

user-extensions.js文件中的代码:

Selenium.prototype.doCustomAlert = function(sTarget,sValue){alert('Target:'+ sTarget +'... Value:'+ sValue); };

Selenium IDE命令详细信息:

命令:customAlert
目标:自定义警报目标
值:自定义警报值