selenium结合sikuliX操作Flash网页
sikuli的官网地址:http://www.sikuli.org
首先下载sikuliX的jar包:https://launchpad.net/sikuli/sikulix/1.1.0
java-doc:http://nightly.sikuli.de/docs/index.html
官网用法介绍:http://www.sikulix.com/quickstart.html
需求:
1.打开百度地图
2.切换城市到郑州
3.使用测距工具
4.测量绿城公园--郑州植物园的距离
前序工作:
1.导入jar包:sikulixsetup-1.1.0.jar
2.在cmd中运行该jar包。java -jar sikulixsetup-1.1.0.jar,则会出现如下图,选择相应选项后,启动会下载sikulixapi.jar。不然会报错:libs to export not found on above classpath: /sikulixlibs/mac/libs64

3.启动成功后会出现如下提示

4.截图,即代码中需要用到的出发位置,终点位置

接下来我们编写代码:
package com.sikuli; import java.io.File;
import java.util.concurrent.TimeUnit; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.safari.SafariDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen; /**
* @author QiaoJiafei
* @version 创建时间:2016年4月5日 下午6:43:55
* 类说明
*/
public class TestSikuli { public static void main(String[] args) {
// TODO Auto-generated method stub
testBaiDuMap();
} /**
* @Title: testBaiDuMap
* @Description: TODO
* @return void
* @throws
*/
private static void testBaiDuMap() {
// TODO Auto-generated method stub
WebDriver dr = new SafariDriver(); dr.manage().window().maximize();
dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
dr.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); dr.get("http://map.baidu.com/");
//打开城市选择下拉框
dr.findElement(By.id("tool-container")).findElement(By.id("ui3_city_change")).findElement(By.tagName("a")).click();//.findElement(By.tagName("em")).click();
//选择H省
dr.findElement(By.id("selCityLetterListId")).findElement(By.linkText("H")).click();
//选择郑州
dr.findElement(By.id("selCityPlaceListId")).findElement(By.linkText("郑州")).click();; //打开工具下拉框
dr.findElement(By.id("tool-container")).findElement(By.xpath("//i[text()='工具']")).click();
//选择测距
dr.findElement(By.id("boxul")).findElement(By.xpath("//i[text()='测距']")).click(); Screen screen = new Screen();
String frompng = "/Users/qiaojiafei/Documents/qiaojiafei/jarfile/sikuli/testphoto/from.png";
String topng = "/Users/qiaojiafei/Documents/qiaojiafei/jarfile/sikuli/testphoto/to.png";
Pattern from = new Pattern(frompng);
Pattern to = new Pattern(topng); try {
if(screen.find(from) != null) {
screen.click(from);
}
if(screen.find(to) != null) {
screen.click(to);
}
screen.doubleClick();
} catch (FindFailed e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
可以在代码中加入:
import org.sikuli.basics.Debug;
Debug.setDebugLevel(3);
查看控制台sikuli的执行过程log
selenium结合sikuliX操作Flash网页的更多相关文章
- Selenium+Java - 结合sikuliX操作Flash网页
前言 前天被一个Flash的轮播图,给玩坏了,无法操作,后来请教了下crazy总拿到思路,今天实践了下,果然可以了,非常感谢! 模拟场景 打开百度地图 切换城市到北京 使用测距工具 测量 奥林匹克森林 ...
- 使用selenium 模拟人操作请求网页
首先要 pip install selenium 安装插件 然后要下载驱动驱动根据你的浏览器 Chrome selenium 驱动下载地址 http://chromedriver.storage. ...
- selenium自动化过程中如何操作Flash动画
最近在看python的爬虫框架(scrapy),一个词概括就是:"酸爽"!等把selenium自动化版块讲完后,打算写一写关于scrapy相关的知识,打算从源码角度解析下scrap ...
- C#操作Flash动画
对于在C#开发的过程中没有接触过Flash相关开发的人员来说,没有系统的资料进行学习,那么这篇文档针对于初学者来说是很好的学习DEMO. 本文章中的DEMO实现了C#的COM控件库中本来就带有对fla ...
- selenium鼠标悬停操作
有些网页一打开会有一个弹窗,弹窗不消失无法进行取元素操作,只有把鼠标悬停在上面弹窗才会消失,这时就用到了selenium的悬停操作 鼠标悬停 move_to_element() 定位到要悬停的元素 ...
- selenium窗口截图操作
selenium窗口截图操作 使用背景:在自动化测试过程中,可能遇到执行错误情况,那么怎么样及时捕获出错信息/界面? 可以使用 get_screenshot_as_file(self,filenam ...
- selenium控制浏览器操作
selenium控制浏览器操作 控制浏览器有哪些操作? 控制页面大小 前进.后退 刷新 自动输入.提交 ........ 控制页面大小,实例: # -*- coding:utf-8 -*- from ...
- Selenium Web元素操作
我们定位到Web页面元素之后,可以对元素进行一系列的操作,实现跟页面的交互.包括点击.文本输入.元素属性获取等.常用的方法列举如下: 方法 描述 click() 点击元素 send_keys(**va ...
- scrapy和selenium结合抓取动态网页
1.安装python (我用的是2.7版本的) 2.安装scrapy: 详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...
随机推荐
- iOS常用第三方库
1.AFNetworking 轻量级的通讯类库,使用非常简单. 下载地址:https://github.com/AFNetworking/AFNetworking 2.FMDB fmdb是一个数据 ...
- 一次失败的APP业务渗透测试
作者:whoamiecho 来源:ichunqiu 本文参加i春秋社区原创文章奖励计划,未经许可禁止转载! 一. 过程 1.1.事情起因:暴力破解 测试给了个普通用户账号,可以登录.APP一来就要登 ...
- Revit如何模型导入到InfraWorks中
Infraworks也就是以前的Autodesk Infrastructure Modeler(AIM)作为一款优秀的概念设计软件,能接收来自各种来源的数据,这篇介绍如何把revit中的建筑模型导入到 ...
- [Android]AndroidInject增加sqlite3数据库映射注解(ORM)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3623050.html AndroidInject项目是我写的一 ...
- sqlite使用xcode编译
使用xcode去开发makefile的project(Building Makefile Projects With Xcode) 新建工程,template选择 external Build Sys ...
- The Genymotion Virtual device could not obtain an IP address解决办法
打开Genymotion运行虚拟机提示如下错误: The Genymotion Virtual device could not obtain an IP address.For an unknown ...
- 【Android】友盟的自动更新组件
前言 又好又专业的服务能帮开发者省很多时间.一开始做项目也准备自己来统计数据.自己做自动更新,随着使用友盟服务的时间增加,渐渐放弃了这种想法,转而研究如何更充分的使用,这里分享一下使用自动更新组件的心 ...
- 自己用js写的日历(在考勤中使用,显示员工的日期的考勤情况)
1.HTML部分 <div id="AttendanceDataDetailDiv"> <div class="A_close"> &l ...
- iOS开发之多线程技术
本篇争取一篇讲清讲透,依然将通过四大方面清晰的对iOS开发中多线程的用法进行详尽的讲解: 一.什么是多线程 1)多线程执行原理 2)线程与进程 3)多线程的优缺点 二.我们为什么要用多线程编程技术 三 ...
- Web应用程序系统的多用户权限控制设计及实现-页面模块【9】
前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的基本模块-页面模块.页面模块涉及到的数据表为页面表. 1.1页面域 为了更规范和方便后期系统的二次开发和维护 ...