【问题标题】:Selenium paste text into textareaSelenium 将文本粘贴到 textarea
【发布时间】:2023-03-29 17:05:01
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net selenium


    【解决方案1】:

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

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

    所以也许 SetDataObject 是个问题

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-26
        • 2015-05-13
        • 2023-02-07
        • 2021-01-18
        • 2012-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多