【问题标题】:How can I send keyboard shortcut Alt + Shift + Z (hotkey) with Selenium 2?如何使用 Selenium 2 发送键盘快捷键 Alt + Shift + Z(热键)?
【发布时间】:2012-07-16 05:55:47
【问题描述】:

我正在尝试使用 Actions.sendKeys 发送快捷方式,但它不起作用。

(New Actions(driver)).SendKeys(Keys.ALT, Keys.SHIFT, "z");

【问题讨论】:

  • Selenium 的宿主语言是什么?爪哇?

标签: selenium shortcut hotkeys


【解决方案1】:

你可以检查这个问题来参考这个 - Pressing Ctrl+A in Selenium WebDriver

检查使用和弦法的答案。在你的情况下,你可以这样做 -

String selectAll = Keys.chord(Keys.ALT, Keys.SHIFT,"z");
driver.findElement(By.tagName("html")).sendKeys(selectAll);

【讨论】:

  • 我的话完全正确:)。请注意 - OP 的解决方案不起作用,因为它会一个接一个地按下 Alt、Shift 和 Z 键,而不是同时按下。
  • 那么如果我们必须同时按下所有3个按钮,我们可以使用和弦方法吗?
  • 是的,这就是重点:)。我只是在解释为什么 OP 最初的尝试没有奏效。
  • @Hari 但在我的情况下,Z 不起作用,尽管 z 有效——一个案例见鬼!
  • 和弦在 C# 中不可用,您能否建议 C# 的答案。谢谢!
【解决方案2】:

这也可以使用 Actions keyUp 和 keyDown 函数来完成。

WebDriver driver = new FirefoxDriver();
Actions keyAction = new Actions(driver);
keyAction.keyDown(Keys.ALT).keyDown(Keys.SHIFT).sendKeys("z").keyUp(Keys.ALT).keyUp(Keys.SHIFT).perform();

【讨论】:

    【解决方案3】:

    试试看:

    SendKeys.SendWait("%+z")
    

    【讨论】:

      【解决方案4】:

      假设您使用的是 JavaScript,

      Keys.chord(keys)
      

      此外,文档位于https://www.selenium.dev/documentation/en/

      【讨论】:

        【解决方案5】:

        除了其他/接受的答案中建议的Keys.chord(Keys.ALT, Keys.SHIFT,"z"); 方法外,我建议您尝试使用机器人框架来使用键盘快捷键。

        你可以这样做;

        Robot robot = new Robot();
        Thread.sleep(1000);
        robot.delay(3000);
        
        
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_Y);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_Y);
        

        我想这将有助于解决您的问题。

        【讨论】:

          猜你喜欢
          • 2019-02-11
          • 2017-05-07
          • 1970-01-01
          • 2011-07-17
          • 1970-01-01
          • 2020-10-30
          • 2013-02-13
          • 2013-07-24
          相关资源
          最近更新 更多