меня немного смущает ваш вопрос в «: выпадающий список Ajax виден, но не выбран»
это звучит так, как будто элемент отключен. (Java-кодирование)
if so selenium.isElementDisabled()
если не тогда,
1) решение языка программирования с использованием цикла while и isElementPresent()
ИЛИ isElementDisabled()
//trigger the Ajax request and then
long initialTime = System.currentTimeMillis();
do{
thread.sleep(1000);
}while((!selenium.isElementPresent("AjaxElement")) && (System.getCurrentTimeMillis() - initialTime <= 5000)) ;
// что-то вроде вышеприведенного решения для клиентского программирования... но для,
2) встроенное решение селена
у нас есть метод с именем waitForCondition("java script to be executed", "time out value");
этот метод зацикливает оператор javascript до тех пор, пока он не вернет true или не произойдет предоставленный тайм-аут
здесь важно проанализировать элемент application/Ajax, чтобы выяснить, какое именно состояние элемента изменяется.
из вашего объяснения я предполагаю, что display=none
будет изменено на display=block
ИЛИ disabled=true
будет изменено на disabled=false
ИЛИ isReadOnly
будет изменено на отсутствие такого атрибута и т. д...... (вам нужно это выяснить)
а затем используйте этот attribute = value
для создания функции javascript как,
selenium.waitForCondition("window.document.getElementById('AJAX ELEMENT').disabled == 'false'", "3000");
вы можете отработать приведенное выше утверждение, как хотите, на своем языке программирования.
try {
//do the action which triggers the Ajax call
selenium.waitForCondition("window.document.getElementById('AJAX ELEMENT[drop down element]').disabled == 'false'", "3000");
//OR
selenium.waitForCondition("window.document.getElementById('AJAX ELEMENT').disabled == 'false'", "3000");
}
catch(SeleniumException se)
{
if((se.getMessage()).toLowerCase().contains("timed out")
throw //..some a custom exception however your organisation requires
}
selenium.select("drop down element id", "option id");
и так далее.....
person
sudarsan
schedule
04.07.2011