如何在MacOS上粘贴通过Selenium和Java复制到剪贴板的文本

时间:2019-01-16 13:46:53

标签: macos selenium selenium-webdriver webdriver sendkeys

我想在MACOS的一个文本框中粘贴一些文本。我正在尝试下面的代码。但是Control + v和Command + v都不起作用。我还看到这是已知问题,但不确定是否可以解决。 https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5919 代码如下。

std::function

我也尝试了上下文单击,这也不起作用。我已验证copyToClipboard函数是否正常运行。请建议我,如果有任何解决方法。

谢谢, 乌芒

2 个答案:

答案 0 :(得分:1)

您必须在弹出的窗口中选择粘贴选项,该选项将在右后打开,然后单击粘贴选项。 enter image description here

您可以编写这样的代码。

        new Actions(driver ).contextClick(element).sendKeys(Keys.ARROW_DOWN)
   .sendKeys(Keys.ARROW_DOWN)
    .sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).
    sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).perform();

对我而言,粘贴选项位于第5个位置。所以我已经写了5次sendKeys(Keys.ARROW_DOWN)。您可以根据自己的要求编写。

我希望这对您有用。

答案 1 :(得分:-1)

正如您提到的 copyToClipboard()功能正常运行,通过sendKeys()发送字符序列一样,您可以使用以下解决方案:

import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

copyToClipbord(value);
String data = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); 
element.sendKeys(data);