watij对js弹出框的处理
最近使用watij由于遇到js弹出框,让我郁闷了两个礼拜了,虽然网上有不少对于这个处理的帖子,但是由于帖子描述的不够清晰导致花费大量时间也没有搞定,现在在一段时间的努力下,终于搞定了,为了其他人不要像我一样搞很久,我将结合例子一起给出一个troubleshooting,这里的例子是取的watij中的JavascriptClick.html页面做的测试。
首先新建两个类
AlertDialogEvent
ClickThread
package watij.utilities;
import watij.elements.HtmlElement;
/**
* 触发点击线程(ClickThread)事件
*
* @author shiwanli
*
*/
public class AlertDialogEvent {
public static void fire(final HtmlElement btn) {
new Thread(new ClickThread(btn)).start();
try {
// 停一小会看一下效果
Thread.sleep(100);
} catch (InterruptedException e) {
Debug.handleException(e);
}
}
}
package watij.utilities;
import watij.elements.HtmlElement;
/**
* 点击线程
*
* @author shiwanli
*
*/
public class ClickThread implements Runnable {
private HtmlElement btn;
public ClickThread(HtmlElement btn) {
this.btn = btn;
}
public void run() {
try {
this.btn.click();
} catch (Exception e) {
Debug.handleException(e);
}
}
}
为了在中文系统中点击相应的按钮这里对两个类进行了修改
修改IEAlertDialog类
package watij.runtime.ie;
import com.jniwrapper.win32.ui.Wnd; import watij.dialogs.AlertDialog; import watij.utilities.WatijResourceLoader; import watij.utilities.WatijResources;
public class IEAlertDialog extends IEBaseDialog implements AlertDialog {
public static AlertDialog findAlertDialog(IE ie) throws Exception {
Wnd wnd = IEUtil.waitDialogWnd(IE.TITLE);
return new IEAlertDialog(wnd, ie);
}
public IEAlertDialog(Wnd dialog, IE ie) {
super(dialog, ie);
}
public void ok() throws Exception {
Wnd wnd = IEUtil.waitDialogWnd(dialog, "Button", "确定");
IEUtil.clickWindowUntilGone(wnd, dialog);
}
}
修改IEConfirmDialog类
package watij.runtime.ie;
import com.jniwrapper.win32.ui.Wnd; import watij.dialogs.ConfirmDialog; import watij.utilities.WatijResourceLoader; import watij.utilities.WatijResources;
public class IEConfirmDialog extends IEAlertDialog implements ConfirmDialog {
public IEConfirmDialog(Wnd dialog, IE ie) {
super(dialog, ie);
}
public static ConfirmDialog findConfirmDialog(IE ie) throws Exception
{
Wnd wnd = IEUtil.waitDialogWnd(IE.TITLE);
return new IEConfirmDialog(wnd, ie);
}
public void cancel() throws Exception { // Wnd wnd = IEUtil.waitDialogWnd(dialog, "Button", //
WatijResourceLoader.getString(WatijResources.IEConfirmDialog_Cancel))
;
// IEUtil.clickWindowUntilGone(wnd, dialog);
Wnd wnd = IEUtil.waitDialogWnd(dialog, "Button", "取消");
IEUtil.clickWindowUntilGone(wnd, dialog);
}
}
新创建alterClick类来看下执行结果
package LIS;
import java.util.List;
import com.jniwrapper.win32.ui.Wnd; import watij.dialogs.AlertDialog; import watij.finders.SymbolFactory; import watij.runtime.ie.IE;
import watij.runtime.ie.IEUtil; import watij.utilities.AlertDialogEvent;
public class alterClick
{
//protected static final String DIALOG_CLASSNAME = "#32770";
public static void main (String[] args) throws Exception
{
try{
IEUtil.closeAllDialogs();
IEUtil.closeAllBrowsers();
}
catch(Exception e)
{
e.printStackTrace();
}
IE ie = new IE();
//打开 IE 浏览器
ie.start();
ie.goTo("file:///E:/shiwanli_work/watij_release_3.2.1/res/html/Javasc
riptClick.html");//打开JavascriptClick
ie.maximize();//页面最大化
ie.waitUntilReady();//等待页面完成
ie.bringToFront();//将页面置于前端
ie.maximize();//页面最大化
ie.sendKeys("{tab}{tab}{enter}");
// Wnd dialog= Wnd.findWindow(DIALOG_CLASSNAME, "Microsoft Internet
Explorer"); //ie6
// System.out.println(dialog);
// Wnd button = Wnd.findWindow("Button","确定"); // System.out.println(button);
// button.sendMessageEx(0x00F5, 0, 0); // AlertDialog alert;
// alert=ie.alertDialog();
// alert.ok();
AlertDialogEvent.fire(ie.button(SymbolFactory.name, "Microsoft
Internet Explorer"));
ie.alertDialog().ok();
ie.sendKeys("{tab}{enter}");
ie.confirmDialog().ok();
ie.sendKeys("{enter}");
ie.confirmDialog().cancel();
} }
怎么样是不是按钮可以被点击了,
当然还可以修改IEFileDownloadDialog,IEPromptDialog这些类,不过前面的都修改ok
了其他的还有问题吗,
本文档为【watij对js弹出框的处理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。