Selenium将文本粘贴到textarea中
使用Selenium,我想编辑textarea
的内容。 调用textarea.SendKeys("My text")
可以正常工作,但它会逐个字母地输入,对于较长的字符串来说,这显然很慢。
我找到的一个解决方法( http://code.google.com/p/selenium/issues/detail?id=2876 )建议我将字符串复制到剪贴板并将其粘贴到textarea
。 他们给出的Keys
引用在OpenQA.Selenium.Keys
和System.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");