【发布时间】:2017-07-20 15:54:30
【问题描述】:
我们使用 IE 和 Java 运行 Selenium。单击网页上的链接会打开一个新的 IE 页面,该页面显然不是 IE 驱动程序的子页面,因此我无法执行 driver.switchTo();该页面是一个带有空白文件名和确定按钮的表单。以前的开发人员创建了一个机器人类并发送了 9 个 TAB keyPress 事件以到达 OK 按钮,然后是一个
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
现在我需要更改文件名中的值,所以我计算了 TABS 的数量,直到找到文件,然后执行退格键并像这样键入文件名:
for (int ic = 0; ic < filePrefix.length(); ic++) {
char ch = filePrefix.charAt(ic);
int kc = KeyEvent.getExtendedKeyCodeForChar(ch);
System.out.println("Sending " + ch + "[" + kc + "]");
if (ch >= 'A' && ch <= 'Z') {
robot.keyPress(KeyEvent.VK_SHIFT);
}
robot.keyPress(kc);
robot.keyRelease(kc);
if (ch >= 'A' && ch <= 'Z') {
robot.keyRelease(KeyEvent.VK_SHIFT);
}
Thread.sleep(500);
}
这可以在我的机器上运行,但我相信我们第一次运行它时它只是暂停了,当我点击网页时,它询问我是否要允许机器人更改文本。
问题是,这将在 Jenkins 中运行,没有人会回答关于允许机器人访问文本的问题。此外,我知道在 Selenium 网格上运行时,Robot 不是很可靠。
所以我想知道,首先有没有办法启动 IE 并允许机器人读取和更改文本>
其次,这甚至可以在 Selenium Grid(远程)上工作吗?
更好的是,我们如何让 IE 驱动程序能够访问此页面,这样我就可以首先使用非常简单的 xpaths 而不是 Robot(我认为这是不可能的)?
哦,不幸的是,对于这个网站,我们需要 IE,不能使用 Chrome 或 Firefox。
【问题讨论】:
-
我不认为我相信由 Selenium 控制的另一个实例启动的浏览器实例是不可访问的。你确定你完全测试过吗?我以前从未见过。您可能需要短暂等待以确保新浏览器实例已完全加载,然后才能访问它。你能分享一下这个网站,以便我们测试一些东西吗?
-
不幸的是它在我们公司的防火墙内,否则我会。从外面无法进入。至于访问窗口,一位知识渊博的人告诉我同样的事情,你不能这样做。我们有一个功能,您可以拍摄窗口快照,单击链接,然后等待新窗口并切换到它,因此它应该等到出现新窗口并且窗口完成。但是我什至在睡觉后做了一种(对于String id:driver.getWindowHandles()),并切换到每个窗口,试图找到元素,甚至切换到任何帧。没什么好担心的
-
ked(对不起,我上面的字符用完了)
标签: selenium internet-explorer