2013-05-12 3 views
0

В моем приложении у меня есть текстовое поле, которое при нажатии на кнопку позволяет выбрать дату. Один из способов - выбрать дату с datepicker, или вы можете вручную отправить дату. Но всякий раз, когда я отправляю дату, она говорит, что не может найти элемент.datepicker + webdriver + не удалось идентифицировать элемент

это код для отправки даты в текстовое поле

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 текстового поля, которое при нажатии на заполнит Datepicker

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" 

и это атрибут datepicker после нажатия текстового поля

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;" 
+0

Скриншоты никоим образом не помогут, то, что вы всегда должны публиковать для проблемы Selenium/WebDrvier, является фактическим HTML. –

+0

@Ross Patterson: Я добавил код HTML – Sriram

+1

@Sriram: почему бы вам не использовать driver.findElement (By.id ("txtdateFrom")). SendKeys ("03/05/2013"); Это может сработать для вас, если сборщик дат не находится в iframe. – Omkar

ответ

0

Прежде всего спасибо за поддержку и все предложения. Проблема заключалась в совместимости с браузером. Наше приложение работает только в IE 8. Все время я использовал IE 9. Когда я проверил свой код в IE 8, он отлично работает и может ввести дату. Спасибо всем!!

0

Самый простой подход был бы попробовать driver.findElement (By.xpath (".//*[@ ID = 'txtdateFrom']")). Нажмите(). SendKeys ("03.05.2013"); Хотя sendKeys делает это неявно, иногда щелчок по Inputfield перед sendKeys() очень полезен, это мой опыт. Далее этот xpath в порядке, но, похоже, копия & вставляется из firepath. Я предлагаю вам использовать // input [@ id = 'txtdateFrom']. Так что это более читаемо.

+0

Даже после изменения xpath, так как u предложил, чтобы он выдавал ту же ошибку – Sriram

+0

, вы также попытались выполнить щелчок на вкладке перед заполнением нужной даты? – goya

+0

Да, я попытался щелкнуть по полю, а также .. Он не может найти элемент ... – Sriram

0

На мой взгляд, вы должны использовать Js исполнитель:

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("window.document.getElementById('txtdateFrom').setAttribute('value', '03/05/2013');"); 

Атрибут может отличаться, вы должны искать его в DOM.

Может быть, селен не ждет элемент и не может его найти. Вы можете найти этот элемент без отправки ему ключей?

+0

Когда я пытаюсь ур код, он вызывает следующую ошибку. Org.openqa.selenium.WebDriverException: TypeError: window.document.getElementById (.. .) is null – Sriram

+0

Этот webdriver может найти элемент, когда я отправляю этот код urs. js.executeScript ("window.document.getElementById ('txtdateFrom'), но выдает ошибку, о которой я упоминал ранее, если я передаю весь код js.executeScript (" window.document.getElementById ('txtdateFrom'). setAttribute ('value', '03/05/2013 '); "); – Sriram

+0

Что это значит? Js.executeScript (" window.document.getElementById (' txtdateFrom '). Value = '03/05/2013' – Ievgen

Смежные вопросы