Java Selenium-webdriver:在文本区域中输入文本

时间:2013-10-11 07:49:19

标签: selenium-webdriver selenium-rc selenium-grid

附上图片以获取更多详细信息请关注::![我想在文本区域输入文字:照片中提到] [1] [1]:http://i.stack.imgur.com/sai92.png我想将文字输入文字区域但发生错误,找不到元素。我试过X路径,名称和ID,但无法执行此代码,并希望与页面上出现的其他元素一起玩,但测试目的却没有!我不知道它可以用java-executor或switch窗口处理(弹出)。下面提到的是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 code:

<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 个答案:

答案 0 :(得分:5)

我遇到了与 textarea 类似的问题,如果你能发送密钥以前的输入字段,只需使用 TAB < / strong>移动到下一个字段(textarea)并输入文本,它对我有用

driver.findElement(By.id("id_of_previous_input_field")).sendKeys(Keys.TAB,"This text will appear in textarea");

答案 1 :(得分:0)

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

  

SWITCHTO()。窗口(手柄)

当然问题是找到处理程序。进入弹出窗口后,您可以搜索元素并使用它们。 Here你有一些关于这个问题的有用帖子并有一些解释。

答案 2 :(得分: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")

它有效;)

答案 3 :(得分:-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();
                }
                }
                }
        }