在使用UI自动化框架Homlos时做自动化程序开发时,发现想使用的一些接口或方法Homlos没有提供或者一些方法存在bug,在这里本人把在开发过程中遇到的问题和解决方式列出来供大家参考。
问题一:在调用firefox浏览器时,如何调用firefox的默认配置,来保证程序打开firefox后firefox浏览器里的各项配置都能生效
解决方案:在SeleniumDriver.java源文件里修改下面的一段代码,把firefox的配置文件加载进去
/**新建WebDriver firefox引擎,主页为url
* @param url 引擎打开的主页
* @throws IOException */
public static SeleniumDriver createWebDriverFireFoxEngine(){
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile(“default”);
SeleniumDriver driver=new SeleniumDriver(new FirefoxDriver(profile));
driver.type=EngineType.WebDriverFirefox;
return driver;
}
问题二:在web页点击超链接打开了一个新的浏览器窗口,如何先关闭这个新的浏览器窗口再回到第一次打开的浏览器窗口
解决方案:修改HolmosWindow.java源文件,增加一段代码
/**获得当前窗口句柄*/
public static String getHandle(){
return Allocator.getInstance().currentWindow.getHandle();
}
/**获得所有窗口句柄*/
public static Set<String> getHandles(){
return Allocator.getInstance().currentWindow.getHandles();
}
/**切换到下一窗口*/
public static WebDriver SwitchToWindow(String Handle){
return Allocator.getInstance().currentWindow.SwitchToWindow(Handle);
}
public static void NextHandle(String currentWindow){
Iterator<String> it = HolmosWindow.getHandles().iterator();
while(it.hasNext()){
if(currentWindow == it.next()) continue;
SwitchToWindow(it.next());
}
}
在case中具体使用时这样写:
//获得当前窗口
String currentWindow = HolmosWindow.getHandle();
String perWindow = currentWindow;
//切换到下一个窗口
HolmosWindow.NextHandle(currentWindow);
/*在该窗口做自己的操作*/
//操作完毕后关闭该窗口
HolmosWindow.close();
//关闭后回到之前的窗口
HolmosWindow.SwitchToWindow(perWindow);
问题三:在获取web页面的ListElement列表元素时,如果列表的数量少于2个或没有时,调用holmos的getElemenetsSize()方法来获得列表个数时会经常返回一个-1
解决方案:在调用getElemenetsSize()之前先初始化一下ListElement元素为第1个,即先调用ListElement的select(0)方法。
Comments