FluentWait用于动态创建的ListBox

时间:2015-05-11 22:24:06

标签: java ajax listbox webdriver fluent

我有一个列表框(droplist)项,当我点击div / span元素时动态创建..但是,当我尝试点击列表框时在做了一个流利的等待后,它会抛出一个错误说

  

元素在点(741,192)处无法点击。其他元素将收到点击:"

如果我尝试使用Thread.sleep(2000),则代码运行完美。关于如何解决此问题并使其在fluentWait中运行的任何想法。我在 ExpectedConditions 类中尝试了 elementTobeClickable,elementSelectionStateToBe,presenceOfElementLocated 方法,它们都抛出相同的错误。我正在使用 ChromeDriver 进行测试。

该页面的代码和HTML代码段位于

之下
WebElement elt = driver.findElement(By.xpath("//*[@id='GroupTT']/span[2]/span/span[1]")); //Clicking on the span so that listbox will be activiated

Actions act = new Actions(driver);
act.moveToElement(elt).click().build().perform();       
fWait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//ul[@id='Group_listbox']/li[2]")))); //Thread.sleep(2000) works fine here.
driver.findElement(By.xpath("//ul[@id='Group_listbox']/li[2]")).click();

HTML代码段

<div >
<ul unselectable="on"  id="Group_listbox"  role="listbox" style="overflow: auto; height: auto;">
<li tabindex="-1" role="option" unselectable="on" class="k-item" data-index="0"> Group1 </li>
<li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" data-index="1"> Group2 </li>
<li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" data-index="1"> Group3 </li>
</ul>
</div>

1 个答案:

答案 0 :(得分:0)

您可以尝试更改XPath定位器以按内部文本查找元素。

self.user.text=self.userName