使用selenium在网站自动化测试中的实践
近用selenium在做网站自动化,按照google用selenium的经验做了一些尝试。
主要分成了4层,这样做主要是为了对于代码重用性的考虑。
第一层是UIobject,主要是对于页面上的UI做了一些封装
MILY: Consolas, 'Courier New', Courier, mono; BACKGROUND-COLOR: transparent; WORD-WRAP: break-word">
Java代码 javascripts/syntaxhighlighter/clipboard_new.swf width=14 height=15 type=application/x-shockwave-flash flashvars="clipboard=public%20class%20SelectUIObject%20extends%20UIObjiect%20%7B%0A%0A%20%20%20%20private%20SeleniumHelper%20helper%20%3D%20new%20SeleniumHelper()%3B%0A%20%20%20%20public%20String%20read(String%20locator)%7B%0A%20%20%20%20%20%20%20%20return%20%20helper.getSelectOptions(%20locator)%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20public%20void%20write(String%20locator%2C%20String%20value)%20%7B%0A%20%20%20%20%20%20%20String%20selectValue%20%3D%22label%3D%22%2Bvalue%3B%0A%20%20%20%20%20%20%20%20helper.select(locator%2C%20selectValue)%3B%0A%20%20%20%20%7D%0A%7D%0A%20%20%20%20%20%20%20" quality="high" allowscriptaclearcase/" target="_blank" >ccess="always">
public class SelectUIObject extends UIObjiect {
private SeleniumHelper helper = new SeleniumHelper();
public String read(String locator){
return helper.getSelectOptions( locator);
};
public void write(String locator, String value) {
String selectValue ="label="+value;
helper.select(locator, selectValue);
}
}
其中的SeleniumHelper是一些基本selenium的客户端的封装,如;
Java代码 TestCase.browser.getSelectOptions(locator)%3B%0A%20%20%20%20%20%20%20%20String%20value%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%200%3B%20i%20%3C%20values.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20value%20%2B%20values%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20value%20%2B%20'%2C'%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%0A%7D" quality="high" allowscriptaccess="always">
public String getSelectOptions(String locator) {
String[] values = SeleniumTestCase.browser.getSelectOptions(locator);
String value = "";
for (int i = 0; i < values.length; i++) {
value = value + values[i];
value = value + ',';
}
return value;
}
第二层页面层,主要是页面的ui的封装 。如
Java代码
/**
* 搜索价格
* @param price 单位下拉
* @param maxPrice 高价格
* @param minPrice 低价格
*/
public void searchPrice(String price,String maxPrice,String minPrice) {
selectUI.write("o.121", price);
textUI.write("o.price", minPrice);
textUI.write("document.forms[1].elements[4]", maxPrice);
LinkUI.write("document.forms[1].elements[5]");
waitForPageToLoad("30000");
}
这里有些问题,主要页面上的元素的定位,还是在代码中写死,对于页面的改版还是需要修改源代码