Selenium将文本粘贴到textarea中

使用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中输入,这显然不是我想要的。

有没有人知道问题可能是什么?

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

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

所以也许SetDataObject是一个问题

希望这个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");