如何使用Holmos处理模态窗口(ModalDialog)

在自动化测试过程中发现点击某个按钮后弹出了一个特别的窗口。

特点一,该窗口不关闭就无法切换到其他窗口。

特点二,该窗口无法使用开发人员工具进行探测。

 

这个特别的窗口就是模态窗口:

 对话框一般分为两种类型:模态类型(modal)与非模态类型(modeless)。

所谓模态对话框,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框。

非模态对话框则不会强制此种特性,用户可以在当前对话框以及其他窗口间进行切换。(引用) 

 

Holmos自带的跳转窗口的方法都需要一个参数url地址或者窗口title作为跳转依据,但是模态窗口无法使用开发人员工具进行探测,意味着拿不到url或者title就无法跳转到该窗口上。

 

这种情况下应该怎么办?如何跳转到一个没有跳转依据的窗口上?

 

已知Holmos提供可根据浏览器窗口handle属性确定窗口的唯一性。

而窗口的弹出一般都是由单击事件触发的,点击事件触发后,浏览器窗口的数量肯定会多一个。

抓取点击事件后handle的集合减去点击事件之前handle的集合,即得到新的窗口handle。

 

方法代码如下:

public void clickAndSelectModalDialog()  throws BusinessException{
			
		 String popupWindowHandle  =  getPopupWindowHandle();
		 BrowserWindow currentWindow=Allocator.getInstance().currentWindow;
		 WebDriverBrowserWindow webDriverBrowserWindow=new WebDriverBrowserWindow(currentWindow.getDriver());
		 webDriverBrowserWindow.setWidowHandle(popupWindowHandle);
		 List<BrowserWindow> windows = new ArrayList<BrowserWindow>();
		 windows.add(webDriverBrowserWindow);			
		 for(BrowserWindow window:windows){
				if(window.getHandle().equalsIgnoreCase(popupWindowHandle)){
					System.out.println("逮住窗口了");	
					window.focus();
					break;
				}
			}
	}

public String getPopupWindowHandle() throws BusinessException {
        String popupHandle = null;
    	int maxTimeToWait = 15000;
        int timeInterval = 1000;
        int timeElasped = 0;
        int attempt;
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值