首页 > 解决方案 > 无需手动访问 IE 即可提交加密数据

问题描述

我正在使用 Selenium 和 IE 进行测试。我需要允许提交未加密的表单数据,但我无法手动访问 IE。只是通过詹金斯。我的办公桌上确实有相同的 IE,因此我可以在远程机器上运行之前在我的办公桌上尝试一些东西。这是我要设置的:

在此处输入图像描述

我可以通过一堆机器人呼叫来做到这一点。只需要执行一次。基本上一个

 ALT t                    -- to select tools
 CTRL-TAB                 -- select security tab
 LEFT                     -- select Internet
 Three TABs and ENTER     -- select Custom Level
 145 DOWN arrows          -- select Enable encrypted send
 BUTTON1_DOWN_MASK        -- select radio button
 three TABs               -- to move to OK
 ENTER                    -- to click OK and close

我也重复另一个区域。正如我所说,我可以在我的机器上进行测试。这在一定程度上可以正常工作。它成功地启用了 Submit non-encrypted form enable,但是当我执行 ENTER 时,将焦点切换到我的 selenium window 。

该算法相当简单。对于每个键,我都会做一个 robots.keyPress(ch); mywait(1000);robot.keyRelease(ch);mywait(1000)。mywait 只是我写的一个等待,所以我不必用 try/catch 包围每个 Thread.sleep()。

如果有两个键(如 ALT t 或 CTRL TAB),我会按 key1;等待; 按键2;等待; 释放键 2;等待释放键1;等待

对于按钮点击我做

robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
mywait(500);                robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
mywait 500;

这是选择单选按钮的正确方法还是有更好的方法?如果我可以在启动 IE 之前将其添加到 IE 功能中,那就太好了,但我找不到该选项。

我的测试一直失败,因为打开了一个模式警报“当你提交未加密的数据时,人们可以看到你在做什么......”。我试过在各个地方做 driver.switchTo().alert().accept(); 但我仍然不断收到意外的打开警报消息。

任何建议,将不胜感激。这是 Windows 10 上的 Java 1.8、IE 11、Selenium(我的桌子上是 Windows 7)

标签: javaautomation

解决方案


经过一番研究后,我为您找到的最简单的解决方案是使用注册表来修改该值。

我使用 Microsoft 文档来检查该特定设置的区域代码和值是什么。 https://support.microsoft.com/en-gb/help/182569/internet-explorer-security-zones-registry-entries-for-advanced-users

使用 CMD reg add 您可以更改它,这是您的确切场景的示例

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2" /t REG_DWORD /v 1601 /d 0 /f

/t = Type
/v = Name of the registry to change
/d = The value to change to (Enable = 0, Disable = 3)
/f = Force overwrite

您可以使用 bat 在 Jenkins 中轻松运行它。

如果您需要任何进一步的帮助,我很乐意提供帮助:)。


推荐阅读