【问题标题】:Not able to enter text in the text area using Selenium Web Driver C#无法使用 Selenium Web Driver C# 在文本区域中输入文本
【发布时间】:2021-06-27 04:12:22
【问题描述】:

以下是源代码。

我想在下面的文本框区域输入文本。无法输入数据。告诉我,如何在下面的文本框中输入文本。

    <td id="ctl00_cRight_ucSMS_redSMSBodyCenter" class="reContentCell" style="height:100%;">
    <label for="ctl00_cRight_ucSMS_redSMSBodyContentHiddenTextarea" style="display:none;">
RadEditor hidden textarea
</label>
    <textarea id="ctl00_cRight_ucSMS_redSMSBodyContentHiddenTextarea" name="ctl00$cRight$ucSMS$redSMSBody" rows="4" cols="20" style="display:none;">
    </textarea>
    <iframe frameborder="0" src="javascript:'<html></html>';id="ctl00_cRight_ucSMS_redSMSBody_contentIframe" title="Rich text editor with ID ctl00_cRight_ucSMS_redSMSBody" style="width: 100%; height: 218.009px; margin: 0px; padding: 0px;">
    </iframe></td>

我已经输入了下面的代码来输入数据。

IWebElement userid = FamosDriver.WebDriver.FindElement(By.Id("ctl00_cRight_ucSMS_redSMSBodyCenter"));
                userid.SendKeys("Test");

我还尝试了以下 Java 脚本执行器代码。

IJavaScriptExecutor jst = FamosDriver.WebDriver as IJavaScriptExecutor;
         jst.executeScript("document.getElementById('ctl00_cRight_ucSMS_redSMSBodyCenter').value='testuser'"); 

我错过了什么吗?我不知道如何解决这个问题

【问题讨论】:

    标签: javascript c# selenium selenium-webdriver css-selectors


    【解决方案1】:
    <textarea id="ctl00_cRight_ucSMS_redSMSBodyContentHiddenTextarea" name="ctl00$cRight$ucSMS$redSMSBody" rows="4" cols="20" style="display:none;">
        </textarea>
    

    如果您查看样式属性,它的 style="display:none; 显示为无。

    你需要更改textarea的属性,然后使用send_keys() 使用java脚本执行器设置属性。

    IWebElement userid = FamosDriver.WebDriver.FindElement(By.Id("ctl00_cRight_ucSMS_redSMSBodyCenter"));
    IJavaScriptExecutor js =FamosDriver.WebDriver as IJavaScriptExecutor;;
    js.executeScript("arguments[0].style='display: block;'", userid);
    userid.SendKeys("Test");
    

    【讨论】:

    • 它有效。但它会产生其他一些问题。我为此发布了单独的问题。如果您知道答案,请也帮助解决该问题。 stackoverflow.com/questions/66885762/…
    • 我认为有一个错字。我已将 element 更改为 userid 。希望这就是问题所在。
    【解决方案2】:

    您在框架中,我可以从您的 HTML 代码中看到这一点。这意味着您只需要切换到 ireame 执行一些操作并切换回默认内容。有多种实现方式。对于 C#,它看起来像:

    //Use one of these 4 options
    driver.SwitchTo().Frame(frame-id);
    driver.SwitchTo().Frame("frame-name");
     
    /* weblocator can be XPath, CssSelector, Id, Name, etc. */
    driver.SwitchTo().Frame(driver.FindElement(By.weblocator("web-locator-property")));
    //////YOUR ACTION
    driver.SwitchTo().DefaultContent();
    

    https://www.lambdatest.com/blog/handling-frames-and-iframes-selenium-c-sharp/上查看更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2015-08-12
      • 2019-06-29
      相关资源
      最近更新 更多