3

附上图片了解更多详情请关注::![我要在文字区输入文字:图片中提到][1][1]:http: //i.stack.imgur.com/sai92.png I想将文本输入文本区域,但出现找不到元素的错误。我已经尝试过使用 X 路径、名称和 id,但无法执行此代码,并且想使用页面上出现的其他元素进行测试,但没有!!!我不知道它可以用 java-executor 或切换窗口(弹出)处理。下面提到的是 java 代码。如何处理这种情况,请提供详细信息。

Java代码:

@Test   
public void CreteLead() throws InterruptedException 
{
    WebElement _loginName = 
        driver.findElement(By.xpath(OR.getProperty("username")));

    _loginName.sendKeys(OR.getProperty("loginId"));

    WebElement _password = 
        driver.findElement(By.xpath(OR.getProperty("password")));
            _password.sendKeys(OR.getProperty("loginPassword"));
    WebElement _login = 
        driver.findElement(By.xpath(OR.getProperty("login")));

    _login.click(); 
    Thread.sleep(5000);

    WebElement _New = 
        driver.findElement(By.xpath(OR.getProperty("New")));

    _New.click();
    Thread.sleep(10000);
    driver.findElement(By.id("btnCreateCustomer")).click();

HTML 代码:

<table class="tbl_top_align" width="100%" cellspacing="3" cellpadding="0">
  <tbody>
    <tr>
    <tr>
    <tr>
    <tr id="trBranch">
    <tr id="trAssign">
      <td> Assign To*: </td>
      <td>
        <table cellspacing="0" cellpadding="0">
          <tbody>
            <tr>
              <td style="font-weight: normal !important;">
                <div 
                  id="ctl00_CPHPageContents_ctl00_CPHPageContents_ddlAssignedToPanel" 
                  class="RadAjaxPanel" style="display: block;"
                >
                  <span id="RequiredFieldValidator1" 
                    class="error_message" style="display:none;"
                  >* missing</span>
              </td>
              <td style="vertical-align: middle !important;">
              <td style="vertical-align: middle !important;"> Referral </td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
    <tr>
      <td style="padding: 4px 0 5px;"> Follow-up on: </td>
        <td style="padding: 4px 0 5px;">
          <a id="btnFollowUp" 
            href="javascript:__doPostBack('ctl00$CPHPageContents$btnFollowUp','')"
          >Not Scheduled</a>
        </td>
      </tr>
      <tr>
        <td> Account: </td>
        <td>
          <span id="ctl00_CPHPageContents_txtAccount_wrapper" 
            class="riSingle RadInput RadInput_Default" style="width: 160px;">
        </td>
      </tr>
      <tr>
        <td> Value: </td>
        <td>
          <span id="ctl00_CPHPageContents_txtAccountValue_wrapper" 
            class="riSingle RadInput RadInput_Default" style="width: 125px;">
        </td>
      </tr>
      <tr>
        <td>Description*:</td>
        <td>
          <textarea id="txtInstructions" class="schedule_notes" 
            style="height: 95px; width: 294px !important;" cols="20" rows="2"
            name="ctl00$CPHPageContents$txtInstructions"
          />
          <span id="RequiredFieldValidator2" class="error_message" 
            style="display:none;">* missing</span>
        </td>
      </tr> 
      <tr>
    </tbody>
  </table>
  <div class="action_buttons">
  </div>
4

4 回答 4

5

我遇到了与textarea类似的问题,如果您可以将键发送到上一个输入字段,只需使用TAB移动到下一个字段(textarea)并输入文本,它对我有用

driver.findElement(By.id("id_of_previous_input_field")).sendKeys(Keys.TAB,"This text will appear in textarea");
于 2013-10-11T10:58:01.493 回答
0

似乎当您单击“新建”按钮时,它会打开一个新的弹出窗口,您要在其中输入文本。在这种情况下,您需要先使用以下内容切换到此窗口:

switchTo().window(句柄)

当然,问题是找到处理程序。进入弹出窗口后,您可以搜索元素并使用它们。 在这里,您有关于此问题的有用线程并提供了一些解释。

于 2013-10-11T09:44:44.903 回答
0

我也遇到了 textarea 的问题,我只是这样做了:

element = bw.find_element_by_class_name("XXX")
element.click() 
element = bw.find_element_by_class_name("XXX")
element.send_keys("Your text")

它有效;)

于 2018-12-23T14:39:59.987 回答
-1

在您的测试方法中,您首先需要按如下方式保存父浏览器窗口的 WindowHandle。

String parentWindowId = driver.getWindowHandle(); // This should be the first line in your test method

在单击“新建”按钮(打开弹出窗口)的代码之后,输入以下代码。

Set<String> allOpenedWindows = driver.getWindowHandles();
        if(!allOpenedWindows.isEmpty()) {
        for (String windowId : allOpenedWindows) {
            driver.switchTo().window(windowId);

                if(driver.getPageSource().contains("Description")) //"Description" is the name of the label of your text area
                {
                    try{                    
                    WebElement textArea= driver.findElement(By.id("txtInstructions"));
                    textArea.sendKeys("Enter the text here");
                    break;

                }catch(NoSuchWindowException e) {
                e.printStackTrace();
                }
                }
                }
        }
于 2013-10-11T20:25:59.113 回答