2013-05-12 90 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 

我沒有權限來添加屏幕截圖。 請幫忙!!

請在下面找到

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

請找到iFrame HTML內容,點擊它會填充日期選擇器

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" 

當文本字段的

<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,這是在HTML一旦文本框被點擊,日期選擇器的屬性

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。 – 2013-05-12 15:16:42

+0

@Ross Patterson:我添加了HTML代碼 – Sriram 2013-05-13 05:15:33

+1

@Sriram:爲什麼不使用driver.findElement(By.id(「txtdateFrom」))。sendKeys(「03/05/2013」​​);如果日期選擇器不在iframe中,這可能適用於您。 – Omkar 2013-05-13 05:49:26

回答

0

首先感謝支持和所有的建議。這個問題與瀏覽器的兼容性。我們的應用程序只能在IE 8中工作。我一直在使用IE 9。當我在IE 8中查看我的代碼時,它完美地工作並能夠輸入日期。謝謝大家!

0

最簡單的方法是嘗試driver.findElement(By.xpath( 「.//*[@ ID = 'txtdateFrom']」))。點擊()。的SendKeys( 「2013年3月5日」); 儘管sendKeys隱式地做了這些,但有時在sendKeys()之前點擊Inputfield是非常有用的,這是我的經驗。此外這個xpath是好的,但似乎是從firepath複製&粘貼。我建議你使用//輸入[@ id ='txtdateFrom']。所以它更具可讀性。

+0

即使改變後xpath,因爲你建議它會拋出相同的錯誤 – Sriram 2013-05-13 05:14:31

+0

你是否也嘗試在填寫所需的日期之前執行點擊輸入? – goya 2013-05-13 06:35:49

+0

是的,我嘗試點擊該字段以及..它引發無法找到元素... – Sriram 2013-05-13 07:08:56

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 2013-05-13 15:33:05

+0

當我發送這個urs代碼時,webdriver能夠找到元素。 js.executeScript(「window.document.getElementById('txtdateFrom'),但拋出我前面提到的錯誤,如果我給整個代碼js.executeScript(」window.document.getElementById('txtdateFrom')。setAttribute('value', '03/05/2013');「); – Sriram 2013-05-13 15:39:25

+0

這是什麼?js.executeScript(」window.document.getElementById('txtdateFrom')。value = '03/05/2013' – Ievgen 2013-05-13 15:53:14

相關問題