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

本文介绍在自动化测试中遇到模态窗口(ModalDialog)时,由于其特性导致无法通过常规方式切换。文章详细阐述了模态窗口的特点,并提出利用Holmos的窗口handle属性来解决无法获取url或title的问题。通过捕获点击事件前后的窗口handle集合差异,找到新弹出的模态窗口。最后,提供了具体的代码示例和测试用例,演示如何在Holmos中实现对模态窗口的跳转和操作。
摘要由CSDN通过智能技术生成

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

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

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

 

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

 对话框一般分为两种类型:模态类型(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;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值