使用SikuliX定位Object(flash)元素
先说一下背景,这个是我们测试的系统上的一个上传文件的地方,但是用传统的selenium方法很难定位的到。具体的样子是下面这样的。

使用id等属性定位做点击操作好像不能直接操作。无奈之下,只好从网上找找方法。于是乎,就发现了一个好玩的东西Sikulix。
首先,我们需要准备以下,下载地址:https://raiman.github.io/SikuliX1/downloads.html
先在项目中导入jar包,sikulixsetup-1.1.0.jar,然后在cmd命令行输入: java -jar sikulixsetup-1.1.0.jar进行安装。

一般是选择这两个选项。
经过一番摸索,发现这个东西的原理大概就是:在当前可视窗口中,寻找与你截图相同的区域,然后操作该区域的中心点坐标!
安装完成后,最终会有几个东西,简单说下:
1.jar包:sikulix.jar,sikulixapi.jar,这两个jar包导入Eclipse中的project。具体导入buildpath---->add external libray
2.sikulix的IDE,runsikulix.cmd
看名字就差不多能够明白啦。不过,我们这里只是使用它来定位我们想要点击的地方,因此我们先来截图。
Screen s = new Screen();
String target = "F:\\abc\\pic\\test1.png";
Pattern tgp = new Pattern(target);
try {
if(s.find(tgp) != null) {
s.click(tgp);
}
}catch (FindFailed e) {
e.printStackTrace();
}
从这段代码可以看出,我们是通过截图来匹配中心点的位置,从而实现点击。
点击完成后,我们就可以使用上一篇介绍的AutoIt来实现文件的上传,从而使整个过程自动化了。
不过,这里还有一点需要备注一下:
System.setProperty("webdriver.gecko.driver", "c:\\geckodriver.exe");
FirefoxProfile profile = new FirefoxProfile();
//这一句是关键
profile.setPreference("plugin.state.flash", 2);
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
driver = new FirefoxDriver(options);
driver.manage().window().maximize();
这里,profile.setPreference("plugin.state.flash", 2);这一句是关键。对应的值为: 0是禁止,1是询问,2是允许。
使用SikuliX定位Object(flash)元素的更多相关文章
- py+selenium 明明定位不到元素,但却不报错或是报错AttributeError: 'list' object has no attribute 'click'【已解决】
问题:定位不到元素,但却不报错或者出现报错AttributeError: 'list' object has no attribute 'click' 如图 或者 解决方法: 将”driver ...
- Selenium定位一 --单个元素定位方法
Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法. 单个对象的定位方法 多个对象的定位方法 层级定位 定位单个元素在定位单个元素时,selenium-webdriver ...
- 如何借助浏览器Console使用Js进行定位和操作元素
在进行Selenium自动化过程中,我们很难避免一些webdriver 很难定位到的一些元素(如:默认隐藏属性元素),那对于一些比较难定位到的元素,有什么好的解决办法? 其实我们都知道,Sel ...
- 为什么selenium定位不到元素
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理 ...
- Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...
- Selenium webdriver定位iframe里面元素两种方法
以东方财富网登录页面为例: 在查找元素过程中,直接通过id或者xpath等找不到元素,查看页面源代码发现元素是属于iframe里,例如: <div class="wrap_login& ...
- UI自动化测试(三)对页面中定位到的元素对象做相应操作
前两天分别讲述了UI自动化测试基础以及对页面元素该如何进行定位,这一篇自然就是对定位到的页面元素对象进行相应操作啦. 阅读目录 1.常用操作元素对象的方法 2.鼠标事件操作 3.键盘事件操作 4.We ...
- 自动化测试selenium(三) 由于iframe 定位不到元素
iframe原因定位不到元素 现在的项目后台基本都是上左右结构,要出现这个结构效果,需要使用到了iframe标签: 我们先说说iframe在java中使用的方法: driver.switchTo(). ...
- Selenium webdriver定位iframe里面元素
在查找元素过程中,直接通过id或者xpath等找不到元素,查看页面源代码发现元素是属于iframe里,例如: <div class="wrap_login"> < ...
随机推荐
- python:使用多线程同时执行多个函数
使用多线程同时执行多个函数 import time import os import threading def open_calc(): with open('test.txt', 'r') as ...
- 【VS开发】MFC学习之 解决StretchBlt()图片缩放绘图失真
vc中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真.在了解解决方法前先巩固下StretchBlt的用法: StretchBlt 函数功能:函数从源矩形中复制一个位图到目标矩形 ...
- Android中的算法
算法是思想的体现形式,常见的算法做一些总结 算法简介 算法-Algorithm 解题方案的准确而完整的描述,是一系列解决问题的清晰指令 特征 有穷性,确切性,输入项,输出项,可行性 算法运算要素 算术 ...
- dubbo 使用、原理、接口请求,都经历了什么过程
[dubbo官网文档]http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
- java8新特性(2)--接口的默认方法
1.默认方法的定义和作用 在Java8以前的版本中,由接口定义的方法是抽象的,不包括方法体.JDK8版本的发布改变了这一点,其中给接口添加了一个新的功能:默认方法.默认方法允许为接口方法定义默认实现. ...
- Redhat7.6Linux本地的yum源配置
安装好虚拟机,配置Ip地址,见博客https://www.cnblogs.com/xuzhaoyang/p/11264573.html 我是使用的Xshell在外部链接进行的操作,比较简单,见博客ht ...
- DNS欺诈的三种简单方法总结
使用arpspoof.ettercap以及driftnet的简单组合. ①arpsppof+driftnet arpspoof -i eth0 -t 目标ip 目标网关 driftnet -i eth ...
- REST framework之分页组件
REST framework之分页组件 一 简单分页 查看第n页,每页显示n条 from rest_framework.pagination import PageNumberPagination # ...
- SpringCloud之熔断器Hystrix及服务监控Dashboard
目的: 服务雪崩效应 服务熔断服务降级 Hystrix默认超时时间设置 Hystrix服务监控Dashboard 服务雪崩效应 雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文 ...
- ArcGIS JS 之通过代理配置ArcGIS Server服务 token
ArcGIS JS 代理 1.ArcGIS Server Manager中配置访问服务的用户名.密码.角色等,并配置地图服务的具体角色名称 2.在ArcGIS JS中配置使用代理,下述代码将esri的 ...