测试 – 与Selenium中的PDF弹出窗口交互

我正在尝试测试一个页面,单击按钮会生成一个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弹出窗口?

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

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

在Selenium IDE>下指定user-extensions.js文件.选项(菜单)>选项(菜单选项)> “常规”选项卡,然后在“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
目标:自定义警报目标
值:自定义警报值

点赞