2011-07-03 68 views
0

如何选择使用硒代码为Firefox的Ajax下拉建议列表项目?使用Selenium for Firefox选择Ajax下拉建议列表

我的问题是:Ajax下拉列表是可见的,但它没有被选中,接下来的步骤卡住了。 可能是硒正在等待什么。

页面填充的列表是动态的,并且位于bla bla标记中。 请帮助一个示例代码。 我如何在这里使用waitfor *。 记得我没有使用Firefox,但我正在编写代码。 请帮忙。

回答

0

我在与你的问题有点困惑“:Ajax的下拉列表中可见,但它没有选择”

这听起来像该元素将被禁用。 (Java编码)

若然selenium.isElementDisabled()

如果不是的话,

1)使用编程laguage溶液中,同时循环并isElementPresent() OR 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或出现供应超时

这里最重要的是分析应用/阿贾克斯元素找出的这些特定条件元素更改。

从explation我的猜测是这样的,display=none将改为display=block OR disabled=true将改为disabled=false OR isReadOnly将改为没有这样的属性ECT .....(你需要弄清楚这一点)

,然后用这个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"); 

等等.....

相关问题