【问题标题】:selenium.interactions.Actions class for copy/cut/paste not working in chrome browser - Selenium Test Automation用于复制/剪切/粘贴的 selenium.interactions.Actions 类在 chrome 浏览器中不起作用 - Selenium 测试自动化
【发布时间】:2019-04-05 21:12:48
【问题描述】:

我必须在我的应用程序中复制一个对象(文本/形状)并将其粘贴到另一个区域。

在这种情况下,我必须粘贴而不考虑 webElement。所以我不能用这个 -

driver.findElement(By.id("")).sendKeys(Keys.chord(Keys.CONTROL,"v"));

所以我在 selenium 中使用 Actions 类 - selenium.interactions.Actions

actions.keyDown(command).sendKeys("c").keyUp(command).build().perform();

此方法无效Chrome72chromedriver 72

我已经面临这个问题好几个月了。上网寻找解决方案,很多网站都在谈论这个问题 -

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5946

但找不到任何答案,并且在最新版本的 chrome 和 chromedriver 中问题仍然存在。

【问题讨论】:

    标签: selenium selenium-chromedriver


    【解决方案1】:

    看起来 G Chrome 中有一个 lyer 可以阻止此快捷方式:

    https://bugs.chromium.org/p/chromedriver/issues/detail?id=581

    而且它不会被修复。

    也许你能找到解决办法。在我的情况下,我使用 Ctrl+T

    ((JavascriptExecutor) driver).executeScript("window.open('about:blank', '_blank');");
    

    另一种选择是使用机器人,但它只能在活动窗口中工作。它不适用于并行测试。如果您同时工作,它将无法正常工作。这会将命令发送到计算机,而不是浏览器。并且您的窗口必须处于活动状态:

    // Create instance of Robot class
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    

    我希望这会有所帮助。正如我所说,它并非每次都有效;)

    【讨论】:

    • 感谢您的回复。对于打开新标签,它会起作用。但我需要复制/剪切/粘贴的解决方案。请分享任何解决方法。
    • 已更新。希望对你有帮助
    • 谢谢大卫。我会试一试,然后告诉你。
    【解决方案2】:

    我建议在复制之前在代码中使用 Control+a 键,因为您可能需要先选择整个文本,然后再复制文本。

    driver.findElement(By.id("xyz")).sendKeys(Keys.chord(Keys.CONTROL, "a"));
    driver.findElement(By.id("xyz")).sendKeys(Keys.chord(Keys.CONTROL, "c"));
    

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      相关资源
      最近更新 更多