2015-05-11 4 views
2

У меня есть ListBox (выпадающего списка) элемента, который создается динамически, когда я нажимаю на DIV/поверочного элемента .. Однако, когда я пытаюсь нажать на ListBox элемента после выполнения свободно Подождите, это вызывает ошибку:FluentWait динамически созданный ListBox

Элемент не может быть нажат в точке (741, 192). Другой элемент получит щелчок:»

Если я пытаюсь использовать Thread.sleep(2000) то код работает отлично Любые идеи о том, как я могу решить эту проблему и заставить его работать в fluentWait я пытался elementTobeClickable, elementSelectionStateToBe,.. presenceOfElementLocated методов в ExpectedConditions класса, и все они бросают ту же ошибку. Я использую 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> 
+0

Возможных дубликаты http://stackoverflow.com/questions/25929195/webdriver-element-is-not-clickable-chrome – Saifur

+0

Saifru, я проверил ссылку вы упомянули, и ни одно из этих решений не помогут мне. У меня все те же проблемы. Более того, я пытаюсь понять, почему fluentWait не работает, и если я использую неправильные методы класса ExpectedConditions – user766858

+0

Это похоже на проблему с самим ChromeDriver. Раньше я сталкивался с этим. Вы тестировали это в других браузерах? – Saifur

ответ

0

Вы можете попытаться изменить локатор XPath, чтобы найти элемент по его внутреннему тексту.

fWait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//li[text() = 'Group2']")))); 
+0

У меня были те же проблемы, когда я попробовал ваше предложение. Однако на данный момент getText() в конце fWait, похоже, делает трюк. fWait.until (ExpectedConditions.elementToBeClickable (driver.findElement (By.xpath ("// уль [@ ID = 'Group_listbox']/Li [2]")))) GetText(). – user766858