当前位置: 首页 > 知识库问答 >
问题:

使用Selenium和IE的Java机器人类

微生城
2023-03-14

我们正在与IE和Java一起运行Selenium。单击web页面上的链接将打开一个新的IE页面,该页面显然不是IE驱动程序的子页面,因此我无法执行驱动程序。switchTo();这一页是一个表单,文件名和确定按钮为空白。以前的开发人员创建了一个robot类,并发送9个TAB键压事件以获得OK按钮,然后发送一个

  robot.keyPress(KeyEvent.VK_ENTER);
  robot.keyRelease(KeyEvent.VK_ENTER);

现在我需要更改文件名中的值,所以我计算了制表符的数量,直到我到达文件,然后做一个退格键并键入文件名,如下所示:

                    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运行,没有人会在那里回答关于允许机器人访问文本的问题。此外,我明白当运行在一个硒网格上,机器人不是很可靠。

所以我在想,首先有没有一种方法可以启动IE并允许机器人阅读和更改文本>

其次,这在硒网格(远程)上也能起作用吗?

更好的是,我们如何让IE驱动程序能够访问这个页面,这样我就可以首先使用非常简单的XPath而不是Robot(我认为这是不可能的)?

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

共有1个答案

景鸿晖
2023-03-14

这里有一个真正简单的测试来确保你所说的是真的。这段代码使用一个测试站点来等待一个新窗口的加载。您可以使用这段代码,为启动新窗口的链接/按钮/事物添加您自己的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");

如果有效,您应该在控制台中看到找到第二个窗口。如果没有,您应该看到TimeoutException

 类似资料:
  • 我想使用Java机器人类,以便将鼠标移动到一个链接上,动态地创建更多的内容。对于web交互,我使用Selenium WebDriver。 Selenium为getLocation函数引发错误: 有人知道我做错了什么吗?

  • 我正在尝试使用Robot类创建一个游戏机器人。我尝试了以下代码来执行鼠标的右键单击: 而且奏效了。 我正在客户端3D在线游戏上测试它。 按下键“1”应该在Game中执行某种移动,当我尝试下面的代码时,它不起作用: 但当我在游戏中聊天时使用该代码时,它确实起了作用。 它被测试了一遍又一遍,我得到了同样的结果。 是我做错了什么吗?还是游戏发现我不是那个按下那个键的人。

  • 问题内容: 到目前为止,我已经使用Selenium Actions库来在自动化项目中执行鼠标/键盘操作。 最近,我发现了Java AWT Robot类。它与SeleniumActions库有什么可比性?在其中一个案例中是否存在一些可以解决的极端情况?限制?稳定性?性能方面的考虑? 问题答案: 这些工具的工作方式存在巨大差异。使用WebDriver API并将命令发送到浏览器以执行操作(通过“ JS

  • 问题内容: 目前,我正在尝试让Java按下如下键: 按下Enter键3秒钟左右,将导致重复效果。换句话说,如果要手动按住“ r”键,它将首先键入r,然后大约一秒钟后,它会像rrrrrrrr一样。我想要机器人的这种效果。我也尝试过: 但是,这非常敏感,持续时间为1秒…输出,以及计算机在一秒钟内可以完成的所有操作。千行价值。这不是我的意图。有任何想法吗?谢谢! PS我想要这种行为的原因是因为我正在编写

  • 我只是写了一个测试,应该通过webApp下载pdf文件(是的,我知道,我不应该在selenium上做,但是你知道,订单。) 我需要什么? 对于不同的场景,我必须下载不同的pdf,重命名并放置到自定义目录。所以,我必须处理系统模态窗口。一切都很好,所以测试是在远程主机上运行的,当我点击下载文件时,我处理系统模态窗口(我使用机器人包,它是扩展的机器人类,允许我们在远程主机上使用机器人类),所以我使用机

  • 我想用机器人框架实现selenium网格。我已经配置了selenium网格集线器和两个节点,但是我不知道如何在此设置后触发并行测试用例执行,在哪里使用python语言和selenium 2库关键字更新机器人框架中的线程数和并行测试执行设置?此外,在哪里分配集线器url来触发执行?请建议可能的解决方案。注意:我们在脚本中使用selenium 2库关键字,而不是web驱动程序关键字,因此我无法使用“w