应用程序包括动态搜索框& 键入“孟买”搜索结果时,下拉显示如下, 但是通过硒作为,
driver.findElement(By.id("searchstr2")).sendKeys("Mumbai");
或
driver.findElement(By.id("searchstr2")).sendKeys("Mumbai"+ARROW_DOWN);
文本框html as,
<input id="searchstr2" class="search ui-autocomplete-input" type="text" placeholder="Search for Building, Location or Developer" autocomplete="off" name="searchstr2" size="35" style="background-image: none;"
成功搜索列表显示为,
<li id="ui-id-117" class="ui-menu-item" tabindex="-1">
<a>
Nariman Point -
<b style="font-size:11px">
<span style="font-size:.8em; /*color:#EE7600;*/ color:#888888; float:right;">locality</span>
</a>
</li>
<li id="ui-id-118" class="ui-menu-item" tabindex="-1">
<li id="ui-id-119" class="ui-menu-item" tabindex="-1">
<li id="ui-id-120" class="ui-menu-item" tabindex="-1">
<li id="ui-id-121" class="ui-menu-item" tabindex="-1">
请建议。
答案 0 :(得分:1)
自动填充字段的问题在于,通常会有一个Javascript事件等待文本出现在字段中以显示可用的建议(可能是Ajax被执行以从服务器获取建议)。 SendKeys
没有触发该事件,因此您可以在输入文字后尝试点击该字段。
基本上是:
WebElement suggestion = driver.findElement(By.id("searchstr2"));
suggestion.sendKeys("Mumbai");
suggestion.click();
我没有对此进行测试,因此您可以尝试在click()
之前使用sendKeys()
方法。
如果这不能解决您的问题,您可以尝试使用Javascript来触发onChange事件:
WebElement suggestion = driver.findElement(By.id("searchstr2"));
suggestion.click();
suggestion.sendKeys("Mumbai");
((JavascriptExecutor) driver).executeScript("$(arguments[0]).change(); return true;", suggestion);
答案 1 :(得分:1)
java脚本需要一些时间来加载列表,所以我在发送名称和放大器之间添加了计时器。向下箭头键事件将对我来说代码捕捉为,
WebElement ar=driver.findElement(By.id("searchstr2"));
ar.sendKeys("Mumbai");
Thread.sleep(2000);
ar.sendKeys(Keys.ARROW_DOWN);