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を使用して次のフィールド (テキストエリア) に移動し、テキストを入力するだけでうまくいきました

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 に答える
-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 に答える