在自动化过程中不能单击右键菜单,因为它在DOM之外



我正在尝试自动化一个测试,我需要搜索一部电影,右键单击一个链接并选择第一个选项(在新选项卡中打开(。尝试启动一个机器人类,使用动作类,将右键单击选择窗口视为一个单独的窗口,甚至发送一个";shift+enter";命令。这些都不起作用。最流行的解决方案(action类(存在这样的问题,即即使我能够通过在向"发出命令时使用上下文点击来右键单击链接;按下键盘的向下键";它没有进入右键菜单,而是向下滚动网页,即根本不与菜单交互。尽管当我手动单击向下按钮时,它显然选择了菜单的第一个选项。(也尝试过多个Keys.DOWN命令(这是我的动作类代码:

driver.get("https://www.google.com");
WebElement search = driver.findElement(By.name("q"));
search.click();
search.sendKeys("After life"+ ENTER);
WebElement toClick =driver.findElement(By.xpath("//h3[contains(text(),'After Life (TV Series 2019–2022) - IMDb')]"));
Actions actions = new Actions(driver);
actions.contextClick(toClick).perform();
actions.sendKeys(Keys.DOWN).sendKeys(ENTER).perform();

也许获得"href"属性,手动打开一个选项卡并转到新选项卡上的链接?

我不确定为什么它不能与Actions类一起使用,我认为您使用的是Keys.DOWN而不是keys.ARROW_DOWN。甚至它也不适用于keys.ARROW_DOWN。通过同时使用ActionsRobot类,它起了作用。

代码

Actions actions = new Actions(driver);
actions.contextClick(toClick).perform();
Thread.sleep(2000);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

相关内容

最新更新