1、常用函数addLoadListener,包含对页面加载状态的多种监控回调。

browser.addLoadListener(new LoadAdapter() {
@Override
public void onStartLoadingFrame(StartLoadingEvent event) {
if (event.isMainFrame()) {
System.out.println("Main frame has started loading");
}
} @Override
public void onProvisionalLoadingFrame(ProvisionalLoadingEvent event) {
if (event.isMainFrame()) {
System.out.println("Provisional load was committed for a frame");
}
} @Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
System.out.println("Main frame has finished loading");
}
} @Override
public void onFailLoadingFrame(FailLoadingEvent event) {
NetError errorCode = event.getErrorCode();
if (event.isMainFrame()) {
System.out.println("Main frame has failed loading: " + errorCode);
}
} @Override
public void onDocumentLoadedInFrame(FrameLoadEvent event) {
System.out.println("Frame document is loaded.");
} @Override
public void onDocumentLoadedInMainFrame(LoadEvent event) {
System.out.println("Main frame document is loaded.");
}
});

2.实验代码(为了节省展示代码,去掉了一些null判断)

①在baidu的输入框中填写我们自己的输入数据

        browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
//String url = event.getValidatedURL(); //可以使用getValidatedURL过滤处理特定的url
if (event.isMainFrame()) {
DOMDocument doc = event.getBrowser().getDocument();
DOMElement kwInput = doc.findElement(By.id("kw")); //找到对应的输入框元素(这里的By类提供了多种查找的方式)
kwInput.setAttribute("value", "JxBrowser"); //在输入框中输入JxBrowser
}
}
});

效果如下:

②增加一个我们自己的按钮

      browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
//String url = event.getValidatedURL(); //可以使用getValidatedURL过滤处理特定的url
if (event.isMainFrame()) {
DOMDocument doc = event.getBrowser().getDocument();
DOMElement ele = doc.findElement(By.id("form"));//找到对应的表单
DOMElement btn = doc.createElement("button");//加入一个测试按钮
btn.setInnerText("测试");
ele.appendChild(btn);
}
}
});

效果如下:

③模拟点击"百度一下"按钮

      browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
//String url = event.getValidatedURL(); //可以使用getValidatedURL过滤处理特定的url
if (event.isMainFrame()) {
DOMDocument doc = event.getBrowser().getDocument();
DOMElement baiduBtn = doc.findElement(By.id("su"));//找到对应的按钮
baiduBtn.click(); //模拟点击
}
}
});

你会发现网页一直闪烁,因为模拟点击一下,重新刷了一次页面,又再次进入了这个函数。

以上。

JxBrowser之二:常用函数addLoadListener的更多相关文章

  1. JxBrowser之三:常用函数setNetworkDelegate

    1.常用函数setNetworkDelegate,包含对网络传输数据状态的多种监控回调. 2.着重说一下其中的几个函数 BrowserContext browserContext = BrowserC ...

  2. 初识PHP(二)常用函数

    在此记录一些常用库函数和常用语法以便查阅 一.PHP手册 php手册中文地址 http://php.net/manual/zh 二.一些常用操作 2.1字符串操作 2.1.1 strpos — 查找字 ...

  3. 四、Oracle 序列、常用函数、多表连接

    一.序列定义:是oracle数据库专门用来产生连续且自动增长的数字的对象创建语法:create sequence 序列名(sq_表名) nocache(无缓存) create sequence sq_ ...

  4. salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用

    上一篇介绍VF中常用的变量,此篇主要内容为VF页面可以直接使用的函数,主要包括Date相关函数,Text相关函数,Information相关函数以及logic相关函数,其他相关函数,比如math相关函 ...

  5. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  6. PHP 常用函数总结(二)

    4.PHP处理数据库的常用函数. 汇总表 PHP 5 MySQLi 函数 函数 描述 mysqli_affected_rows() 返回前一个 Mysql 操作的受影响行数. mysqli_autoc ...

  7. PHP常用函数总结(二)

    PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 ...

  8. oracle常用函数总结(二)

    之前也有写过“oracle常用函数总结(一)”,为了尽量找全常见oracle函数,笔者特意查找了相关资料来作为参考,下边给大家罗列出来,部分和之前有重复的,希望能帮到大家! 列举了31个函数和1个分组 ...

  9. (转)postgis常用函数介绍(二)

    http://blog.csdn.net/gisshixisheng/article/details/47903151 概述: 书接上文,本文继续讲解Postgres中常用的空间函数的使用. 常用函数 ...

随机推荐

  1. nginx基本用法和HTTPS配置

    nginx作用讲解:1.反向代理:需要多个程序共享80端口的时候就需要用到反向代理,nginx是反向代理的一种实现方式.2.静态资源管理:一般使用nginx做反向代理的同时,应该把静态资源交由ngin ...

  2. daemon函数详解

    https://blog.csdn.net/xinyuan510214/article/details/50903280

  3. CFGym101138D Strange Queries 莫队/分块

    正解:莫队/分块 解题报告: 传送门 ummm这题耗了我一天差不多然后我到现在还没做完:D 而同机房的大佬用了一个小时没有就切了?大概这就是大佬和弱鸡的差距趴QAQ 然后只是大概写下思想好了因为代码我 ...

  4. Jmeter学习之-获取登录的oken值(1)

    ps: 这里只着重讲述如何实时获取其他接口返回的值,作为此次接口的参数传递,添加接口请求的相关不再详述,可查看上一篇文章 为了方便管理,此处将:登录接口单独放在一个线程组下面,需要使用登录接口返回的t ...

  5. python中 ImportError: No module XXX的解决办法

    python是通过过使用:sys.path来获取模块的路径的,返回的但是一个list 向python模块路径中加入自己的模块:sys.path.append(os.path.abspath('%s.. ...

  6. this inspection detects names that should resolved but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are sup

    输入第一行代码:import logging;logging.basicConfig(level==logging.INFO) 提示:this inspection detects names tha ...

  7. 《linux就该这么学》第八节课:第六章存储结构与磁盘划分

     笔记 (借鉴请修改) 6.3.文件系统与数据资料 目前linux最常见的文件系统: ext3:日志文件系统.宕机时可自动恢复数据资料,容量越大恢复时间越长,且不能保证百分百不丢失.   ext4:e ...

  8. [转][访谈] Olivier Grisel谈scikit-learn和机器学习技术的未来

    原文:http://www.csdn.net/article/2015-10-11/2825882 几周前,我们的Florian Douetteau (FD)对Olivier Grisel(OG)进行 ...

  9. Interesting (manacher + 前缀和处理)

    题意:相邻的两端回文串的价值为两个回文串总的区间左端点 × 区间右端点.然后计算目标串中所有该情况的总和. 思路:首先用manacher求出所有中心点的最大半径,然后我们知道对于左区间我们把贡献记录在 ...

  10. react和vue,angular的比较

    就这几天我所了解到react情况和大家探讨一下子react的知识: react由facebook团队维护的一套框架,已经应用在instagram网站上了,react以其独特的性能优化方案,正在被越来越 ...