2

使用 Selenium,我想编辑textarea. 调用textarea.SendKeys("My text")有效,但它逐个字母地键入它,这对于较长的字符串显然很慢。

我发现的一种解决方法 ( http://code.google.com/p/selenium/issues/detail?id=2876 ) 建议我将字符串复制到剪贴板并将其粘贴到textarea. 他们给出的参考在和Keys之间是模棱两可的,所以我两个都试过了。这是我的代码:OpenQA.Selenium.KeysSystem.Windows.Forms.Keys

Clipboard.SetDataObject("My  text");
textarea.SendKeys(OpenQA.Selenium.Keys.Control + "v");

这会冻结应用程序。如果我改用System.Windows.Forms.Keys.Control它,它会输入 controlv,这显然不是我想要的。

有谁知道问题可能是什么?

4

2 回答 2

3

将剪贴板设置为文本时,我可以使用相同的 SendKeys:

Clipboard.SetText(trgt);
myTextArea.SendKeys(OpenQA.Selenium.Keys.Control + "v");

所以也许 SetDataObject 是一个问题

于 2013-09-04T19:33:07.777 回答
1

希望这个 CopyPaste 方法有帮助:

using OpenQA.Selenium.Interactions;
     public void CopyPaste(string copy)
    {
        Clipboard.SetText(copy);
        new Actions(driver).SendKeys(OpenQA.Selenium.Keys.LeftShift + OpenQA.Selenium.Keys.Insert).Perform();
//because it switch to uppercase we do one more click
        new Actions(driver).SendKeys(OpenQA.Selenium.Keys.LeftShift).Perform();
    }

texarea.Click;
// if driver refuse to click textarea you can force it with:
//((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id='MyTextareaId']")));
// not proven, but I think textarea.SendKeys(""); Will click inside the textarea


//Call the method
CopyPaste("Text Appear In the Textarea");
于 2018-05-11T12:28:12.033 回答