0

私のアプリケーションには、クリックすると日付ピッカーが表示されて日付を選択するテキストボックスがあります。1 つの方法は、datepicker から日付を選択するか、日付を手動で送信することです。しかし、日付を送信するたびに、要素が見つからないと表示されます。

これは、テキスト ボックスに日付を送信するためのコードです。

driver.findElement(By.xpath(".//*[@id='txtdateFrom']")).sendKeys("03/05/2013");

次のエラーがスローされます

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//*[@id='txtdateFrom']"}
Command duration or timeout: 15 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:52:59'
System info: os.name: 'Windows 8', os.arch: 'x86', os.version: '6.2', java.version: '1.7.0_17'
Session ID: 3eea4ac2-2b38-4688-9733-8734077f7d3e
Driver info: org.openqa.selenium.firefox.FirefoxDriver

スクリーンショットを追加する権限がありません。助けてください!!

以下のHTMLを見つけてください

<input id="txtdateFrom" class="textbox hasDatepicker" type="text" style="color:Gray;" name="txtdateFrom">

iframe HTMl を見つけてください

<iframe width="100%" scrolling="auto" height="493" frameborder="1" style="vertical-align: top;" allowtransparency="true" id="ContentMain" src="../Report/AuditorAssignmentReportSearch.aspx?Width=100&amp;Height=528"></iframe>

クリックすると日付ピッカーに入力されるテキスト フィールドの DOM

  attributes
    [type="text", style="color:Gray;", 2 more...]

0
    type="text"

1
    style="color:Gray;"

2
    class="textbox hasDatepicker"

3
    id="txtdateFrom"

4
    name="txtdateFrom"

テキストフィールドがクリックされると、これは日付ピッカーの属性です

attributes
    [class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all"]

0
    class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all"

更新された DOM

attributes
    [onclick="DP_jQuery_1368459704950.datepicker._selectDay('#txtdateFrom',4,2013, this);return false;", class=

"  ui-datepicker-today"

]

0
    onclick="DP_jQuery_1368459704950.datepicker._selectDay('#txtdateFrom',4,2013, this);return false;"
4

3 に答える 3

0

最も簡単な方法は、driver.findElement(By.xpath(".//*[@id='txtdateFrom']")).click().sendKeys("03/05/2013"); を試すことです。sendKeys は暗黙的にそれを行いますが、sendKeys() の前に Inputfield をクリックすると非常に便利な場合があります。これが私の経験です。さらに、この xpath は問題ありませんが、firepath からのコピー & ペーストのようです。//input[@id='txtdateFrom'] を使用することをお勧めします。そのため、より読みやすくなっています。

于 2013-05-12T16:55:38.920 に答える