• 欢迎使用千万蜘蛛池,网站外链优化,蜘蛛池引蜘蛛快速提高网站收录,收藏快捷键 CTRL + D

百度API关键词(百度链接)


如果你在UI自动化测试中遇到如下问题,那么本文将会给你带来帮助:

Sikuli是由MIT(麻省理工学院) 研究团队发布的一种图形化编程技术,使用Sikuli你只需要会写HelloWorld这种最基本的编程技能即可,用Sikuli不需要去写出一行行复杂的代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。

Sikuli官网:http://www.sikulix.com/

Sikuli是开源的,源码可在Github查看:https://github.com/sikuli/sikuli

优点

可以测试不易识别或无法定位的对象,比如map 、Flash和图表等;

可以验证图片;

缺点

图片匹配区域的大小和样式不能有丝毫变化,所以如果屏幕分辨率、浏览器缩放等,导致图片区域的大小发生变化,就会失败。

下载地址 https://raiman.github.io/SikuliX1/downloads.html

直接下载sikulixapi.jar即可

自动化测试中最常用的场景是判断某图片是否在当前页面中出现,典型的应用场景是校验上传的图片在页面中正常显示。

例如访问百度首页

https://www.baidu.com/


想验证logo 是否在首页中出现


思路如下:

1.把图片保存到本地。


2.打开https://www.baidu.com/

3.调用sikuli相关方法来判断步骤1中的图片是否在百度首页中展示。核心代码如下:

import org.sikuli.script.FindFailed;

import org.sikuli.script.Pattern;

import org.sikuli.script.Screen;

public boolean isPicExist(String p_iconPath){ //本地图片

Pattern pattern = new Pattern(p_iconPath);

Screen screen = new Screen();

try {

screen.find(pattern).getImage();

return true;

} catch (FindFailed e) {

// TODO Auto-generated catch block

return false;

}

注意:如果是在远程的机器上执行代码,可以用selenium的截屏方法,在远程机器中进行截屏,然后把截屏文件保存到本地,然后判断截屏图片中是否有需要查找的图片。

核心代码如下:

String findedImage = "D:/pic/baidu.png"; //需要查找的图片

String sreenshotImage="D:/pic/baiduhome.png";//截屏图片

Finder objFinder = new Finder(findedImage);

objFinder.find(Image.create(sreenshotImage));

System.out.println(objFinder.hasNext());

有些web页面中的元素无法识别,我们可以通过点击该元素截屏的方法操控元素。在实际工作中我们经常会用到selenium+sikuli联合的方式进行UI自动化测试。由于屏幕分辨率不同、浏览器缩放等原因,都会导致sikuli匹配图片失败,所以项目中仍然不要以sikuli为主,当面对少数selenium难于识别的web元素时,我们可以引入sikuli来确保UI自动化地顺利进行。下面以在百度中搜索关键字的场景为例,使用selenium结合sikuli的方式来完成自动化测试,具体细节实现如下:

1.使用selenium,在百度首页中输入Selenium关键字

2.使用sikuli,点击下图中的“百度一下”图标(前提是已经把该图标保存到本地)


3.使用使用selenium 完成校验工作

代码实现如下:

driver.get("https://www.baidu.com/");

driver.manage().window().maximize();

Thread.sleep(5000);

driver.findElement(By.id("kw")).clear();

driver.findElement(By.id("kw")).sendKeys("selenium");

Thread.sleep(1000);

Screen s = new Screen();

try{

s.click("d:/pic/baidu.png");

}

catch(FindFailed e){

e.printStackTrace();

}

Thread.sleep(3000);

assertTrue(driver.findElement(By.className("nums_text")).getText().contains("百度为您找到相关结果约"));

因为sikuli使用java编写的,要是想使其在python中被调用,可以使用第三方工具来实现。

最常用的工具是JPype,它的原理是在java虚拟机和python虚拟机中进行本地级的接口来实现的。注意两个虚拟机的位数必须一致,必须都是64位或者32位的。

官网:http://jpype.sourceforge.net/

安装方式:pip install JPype1pi

核心代码如下:

from jpype import *

# C:\Program Files\Java\jdk1.8.0_181\jre\bin\server\jvm.dll

startJVM(getDefaultJVMPath(), "-ea", "-Djava.class.path=D:\pic\sikulixapi.jar")

java.lang.System.out.println("hello world") #调用System.out.println

Screen = JClass("org.sikuli.script.Screen") #调用sikuli

screen = Screen()

screen.click("D:/pic/news.png")

shutdownJVM()

本文链接:https://www.24zzc.com/news/169728640147161.html

相关文章推荐

    无相关信息