在我的应用程序中,我有一个文本框,当我单击它时,会显示日期选择器来选择日期。一种方法是从datepicker中选择日期,或者您可以手动发送日期。但是,每当我发送日期时,它都会说无法定位元素。
THis是用于将日期发送到文本框的代码
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&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;"
发布于 2013-05-17 09:55:07
首先,感谢大家的支持和所有的建议。这个问题与浏览器的兼容性有关。我们的应用程序只能在IE 8中运行。我一直在使用IE 9。当我在IE 8中检查我的代码时,它工作得很好,并且能够输入日期。谢谢大家!!
发布于 2013-05-13 13:53:17
在我看来,您应该使用js executor:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.document.getElementById('txtdateFrom').setAttribute('value', '03/05/2013');");
属性可能不同,您应该在DOM中搜索它。
也可能是硒没有等待元素,所以找不到它。你能在不发送关键字的情况下找到这个元素吗?
发布于 2013-05-12 16:55:39
最简单的方法是尝试driver.findElement(By.xpath(".//*@id='txtdateFrom'")).click().sendKeys("03/05/2013");,尽管sendKeys会隐式地这样做,有时在sendKeys()之前单击输入字段是非常有用的,这是我的经验。此外,这个xpath还可以,但看起来像是从firepath复制粘贴的。我建议你使用//input@id='txtdateFrom‘。所以它的可读性更好。
https://stackoverflow.com/questions/16505342
复制