0

私のアプリケーションでは、テキスト フィールドに何らかの値を入力する必要があります。このテキスト フィールドにはデフォルト値が含まれているため、まず値を削除してから新しい値を入力する必要がありますが、この値を削除することも、新しい値を入力することもできません。どんな助けでも大歓迎です。次のコードを試しました:

WebElement samount=d1.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt"));
System.out.println(samount);
samount.clear();
samount.sendKeys("100");

私もこれを試しました:

WebElement searchField=d1.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt"));
System.out.println(searchField);
searchField.click();
searchField.clear();
searchField.sendKeys(Keys.BACK_SPACE );
searchField.sendKeys(Keys.chord(Keys.CONTROL, "a"));
searchField.sendKeys(Keys.DELETE);
searchField.sendKeys("100");
searchField.click();

以下は、私のページの HTML です。

<table cellspacing="6" cellpadding="6" style="width: 100%;">
<tbody>
<tr>
<tr>
<td style="text-align: center;" colspan="2">
<br>
<table width="100%" style="text-align: center;">
<tbody>
<tr>
<tr>
<td id="ctl00_ContentPlaceHolder1_tdFirst" style="width:35%;"> </td>
<td style="text-align: right;">
<td style="text-align: left;">
<input id="ctl00_ContentPlaceHolder1_txtAmt" class="txtAlpha" type="text"        style="width:100px;"       onblur="checkSender();" onkeypress="if    (WebForm_TextBoxKeyHandler(event) == false) return        false;AmountOnly();"    onchange="javascript:setTimeout('__doPostBack       (\'ctl00$ContentPlaceHolder1$txtSenderAmt\',\'       \')', 0)" maxlength="10" value="0.00"      name="ctl00$ContentPlaceHolder1$txtSenderAmt">
4

2 に答える 2

1
WebDriverWait wait = new WebDriverWait(driver, 18);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ctl00_ContentPlaceHolder1_txtAmt")));
driver.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt")).clear();
driver.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt")).sendKeys("Enter-New-Text");
于 2013-11-12T13:43:24.877 に答える
1

あなたのコードは問題ないように見えます - 私は最近、ASP.Net アプリ用の Selenium テスト ドライバーを書きましたが、最初の 3 行と実質的に同じコードを持っています ("ctl00_ContentPlaceHolder1_..." まで;)。ただし、これは、「d1」の作成方法など、実際に問題がある可能性があるため、おそらくより多くのコードが必要になることを意味します。

そうは言っても、自分のコードを見て最初に気付くのは、Web ページと対話しようとしているという理由だけで、次の形式で待機を挿入する必要があることです (これはすべて 1 つのステートメントでありffDriver、私の FirefoxDriver オブジェクトです)。

(new WebDriverWait(ffDriver, 100))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("main-content")));

したがって、私の最初の直感は、Web ページが読み込まれる前に Selenium が要素を見つけようとしている可能性があるということです (ただし、IIRC の場合、通常はより明確なエラーが表示されます)。更新された質問に基づいて、要素に添付された JavaScript の存在が、Selenium の観点から物事を遅くしている可能性があります。

于 2013-11-11T11:43:25.743 に答える