java swt browser_使用java swt browser execute 遇到的问题

最近,写一个工具,用java swt 里面的Browser,

org.eclipse.swt.browser.Browser.execute()方法,执行我的javascript文件

0e694b8673325a6c9c5b6df3937936eb.png

当网页中

1.

2.

第一种方式可以把值赋上去,第2种不行。为什么?

有朋友之前遇到过的么?

java调用代码

public static void addProgressListener(final Map infoMap){

Object browserObj=infoMap.get(Constants.BROWSER);

Object scriptObj=infoMap.get(Constants.SCRIPT_FILE).toString();

Object urlObj=infoMap.get(Constants.EXECUTE_URL).toString();

if(browserObj==null || urlObj==null){

log.debug("no browser find!");

return;

}

final Browser browser=(Browser) browserObj;

final String script=scriptObj.toString();

final String url=urlObj.toString();

if(RuleProcess.infoMap.get(Constants.LAST_PROCESS_LISTENER)!=null){

//去掉上一次的监听

browser.removeProgressListener((ProgressListener) RuleProcess.infoMap.get(Constants.LAST_PROCESS_LISTENER));

}

ProgressListener listener=new ProgressListener() {

public void completed(ProgressEvent event) {

try{

//内部执行script

File scriptFile=new File(RealPath.getBasePath()+"scripts/"+script);

if(scriptFile.exists()){

log.debug("execute script file:"+scriptFile.getPath());

//System.out.println("传入的script文件地址:"+scriptFile.getPath());

String scriptContent=FileUtils.readFileToString(scriptFile);

//替换内部变量

Set keys=infoMap.keySet();

for (String key : keys) {

if(key!=null && infoMap.get(key)!=null && (infoMap.get(key) instanceof String)){

scriptContent=scriptContent.replace("${"+key+"}", infoMap.get(key).toString());

}

}

browser.execute(scriptContent);

}

}catch(Exception e){

log.error("execute rule failed:"+e.toString());

}

}

public void changed(ProgressEvent arg0) {

}

};

browser.addProgressListener(listener);

//重设上次监听对象

RuleProcess.infoMap.put(Constants.LAST_PROCESS_LISTENER, listener);

browser.setUrl(url);

}

最终调用的js代码:

//注册163邮箱

//param(inp_unameObj,passwordObj);

//用户名

var inp_unameObj=document.getElementById("inp_uname");

if(inp_unameObj!=null) inp_unameObj.value='${inp_unameObj}';

//密码

var passwordObj=document.getElementById("password");

if(passwordObj!=null) passwordObj.value='${passwordObj}';

//确认密码

var passwordconfirmObj = document.getElementById('passwordconfirm');

if(passwordconfirmObj!=null) passwordconfirmObj.value='${passwordObj}';

//密码保护问题

var secproblemObj = document.getElementById('secproblem');

if(secproblemObj!=null) secproblemObj.options[3].selected=true;

//密码保护问题答案

var secanswerObj=document.getElementById('secanswer');

if(secanswerObj!=null){

//TODO 这里为什么设值不上去?

secanswerObj.value="1234567890";

}

//性别

var rd1Obj=document.getElementById('rd1');

if(rd1Obj!=null) rd1Obj.checked=true;

//年

var yearObj=document.getElementById('year');

if(yearObj!=null) yearObj.value='1984';

//月

monthObj=document.getElementById('month');

if(monthObj!=null) monthObj.value='10';

//日

dayObj=document.getElementById('day');

if(dayObj!=null) dayObj.value='29';

//注册163邮箱标识

var rd163Obj=document.getElementById('rd163');

if(rd163Obj!=null) rd163Obj.checked=true;

//设置验证码选中

var authcodeObj=document.getElementById('authcode');

if(authcodeObj!=null) authcodeObj.foucs();

上面的密码问题答案,设置不上去,这是不是swt的bug啊?。

软件我打包好了,放在:http://www.vdisk.cn/down/index/4137061A3668

软件使用说明:http://www.docin.com/p-44572976.html

运行的效果:

(我处理的是163邮箱注册的页面,就差这个没解决了)

http://reg.email.163.com/mailregAll/reg0.jsp?from=163mail

e9ff7cc256822674159d9b4ee7e93865.png

svn下载地址:svn://www.svnhost.cn/gaoqs_open_source/web_auto_fill/trunk/com.gaoqs.auto.form

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值