将Java Robot类与Selenium和IE

时间:2017-07-20 15:54:31

标签: selenium internet-explorer

我们使用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并允许机器人阅读和更改文字&gt;

其次,甚至可以在Selenium Grid(远程)上工作吗?

更好的是我们怎样才能让IE驱动程序能够访问这个页面,这样我就可以首先使用非常简单的xpath而不是Robot(我相信这是不可能的)?

哦,不幸的是,对于这个网站,我们需要IE,不能使用Chrome或Firefox。

1 个答案:

答案 0 :(得分:0)

这是一个真正简单的测试,以确保您所说的是真的。此代码使用测试站点等待加载新窗口。您可以使用此代码,为启动新窗口的链接/按钮/事物添加您自己的URL和定位器,并查看Selenium是否检测到新窗口启动。

String url = "http://the-internet.herokuapp.com/windows";
driver.navigate().to(url);
int currentWindows = driver.getWindowHandles().size();
driver.findElement(By.linkText("Click Here")).click();
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.numberOfWindowsToBe(currentWindows + 1));
System.out.println("Found a 2nd window");

如果有效,您应该在控制台中看到Found a 2nd window。如果没有,您应该看到TimeoutException