【问题标题】:Dynamic search unable to show the result through selenium webdriver?动态搜索无法通过 selenium webdriver 显示结果?
【发布时间】:2016-08-12 06:15:10
【问题描述】:

应用程序包含动态搜索框 & 输入“孟买”时,搜索结果下拉显示如下, 但是通过硒作为,

driver.findElement(By.id("searchstr2")).sendKeys("Mumbai");

driver.findElement(By.id("searchstr2")).sendKeys("Mumbai"+ARROW_DOWN);

搜索结果不显示为,

文本框 html 为,

<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">

请提出建议。

【问题讨论】:

  • 你能分享你的网站网址吗??
  • 实际上这个功能在应用程序的后端,所以它需要凭据才能登录。我可以分享相同的html快照吗?
  • 实际上没有看到现场场景很难说是什么问题......
  • 尝试一次:WebElement el = driver.findElement(By.id("searchstr2"));el.click();el.sendKeys("Mumbai");..然后告诉我..
  • 谢谢亲爱的,但没用。

标签: selenium selenium-webdriver


【解决方案1】:

自动完成字段的问题在于,通常会有一个 Javascript 事件等待字段中出现文本以显示可用的建议(可能是执行 Ajax 以从服务器获取建议)。 SendKeys 不会触发该事件,因此您可以在输入文本后尝试单击该字段。 基本上:

WebElement suggestion = driver.findElement(By.id("searchstr2"));
suggestion.sendKeys("Mumbai");
suggestion.click();

我没有测试这个,所以你可以尝试在sendKeys()之前使用click()方法。

如果这不能解决您的问题,您可以尝试使用 Javascript 来触发您的 onChange 事件:

WebElement suggestion = driver.findElement(By.id("searchstr2"));
suggestion.click();
suggestion.sendKeys("Mumbai");
((JavascriptExecutor) driver).executeScript("$(arguments[0]).change(); return true;", suggestion);

【讨论】:

  • 感谢您的帮助,但根据我的观察,上述解决方案不起作用(即列表不显示),同时按下键而不是单击,将显示列表但“Keys.ARROW_DOWN”也不起作用。你能根据这个建议吗?
【解决方案2】:

java 脚本需要一些时间来加载列表,所以我在发送名称和向下箭头键事件之间添加了计时器,这对我来说是代码快照,

WebElement ar=driver.findElement(By.id("searchstr2"));
ar.sendKeys("Mumbai");
Thread.sleep(2000);
ar.sendKeys(Keys.ARROW_DOWN);

【讨论】:

  • 为我工作 :) 谢谢
猜你喜欢
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多