日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

sikuli python java_自动化测试之sikuli调研

發布時間:2023/12/24 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 sikuli python java_自动化测试之sikuli调研 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

調研結果

Sikuli可用于web和app的自動化測試中,操作簡單,代碼容易,但截圖過程太過繁瑣,所需要的圖片內存占用量大,且sikuli的圖片識別度較低,需對所要操作的圖片進行精準截圖。

什么是Sikuli

MIT的研究人員設計了一種新穎的圖形腳本語言Sikuli,計算機用戶只須有最基本的編程技能(比如會寫print”hello world”),他不需要去寫出一行行代碼,而是用屏幕截圖的方式,用截出來的圖形元素組合出神奇的程序。

Sikuli工作原理(以python為例):

通過sikuli IDE,可以建立sikuli腳本,其中包括Python源代碼以及所需要的截圖。Sikuli IDE執行腳本時,通過Python解析器和java庫的橋梁,核心部分解析是通過java庫實現的分兩個部分,java.awt.Robot用來傳遞鍵盤和鼠標的事件流到適當位置;給予OpenCV的C++引擎用于在屏幕內搜索制定的圖片。各部分的協調工作,最終使得sikuli腳本得以運行,如下圖:

利用sikuli對web進行自動化測試的流程

1.下載sikulixsetup

下載地址:https://launchpad.net/sikuli/+download

下載得到:sikulixsetup-1.1.0.jar

2.安裝sikuli

l將jar包導入工程中;

l在cmd中運行該jar包。java -jar sikulixsetup-1.1.0.jar,則會出現如下圖,選擇相應選項后,啟動會下載sikulixapi.jar。不然會報錯:libs to export not found on above classpath: /sikulixlibs/mac/libs642.

l選擇第二個

l啟動后會有have fun的提示;

l在文件夾中找到下載的sikulixapi.jar包,導入到工程中。

3.編寫java代碼

代碼如下:

import org.sikuli.script.FindFailed;

import org.sikuli.script.Key;

import org.sikuli.script.Screen;

public class Sikulidemo123 {

public static void main(String[] args) throws FindFailed, InterruptedException {

Screen s=new Screen();

s.click(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\min1.png”);

s.doubleClick(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\firfoxpic.PNG”);

Thread.sleep(2000);

s.type(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\url1.png”, “******”);

s.type(Key.ENTER);

s.click(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\ningbologin.png”);

s.type(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\username.PNG”,”zhangguangwu”);

s.type(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\password.PNG”,”Abc123456″);

s.click(“D:\\eclipse-jee-mars-2-win32-x86_64\\Sikulidemo\\PNG\\loginbutton.PNG”);

System.out.println(“完美。。。。。”);

}

}

應用seleiun寫的登錄自動化

兩者區別:

üSelenium的準確度更高,而sikuli對圖片的要求很高;

üSelenium寫好的代碼可以在任何計算機上使用,sikuli寫好的代碼僅允許在本機使用,因為圖片的識別會因為分辨率、背景顏色,圖片大小的變化而變化;

üSelenium運行起來較為緩慢,而sikuli代碼運行起來能很快識別出要點擊和添加的內容;

üSelenium中有很多元素無法獲得,如xpath和操作windows系統等,但sikuli都可以通過識別圖片從而進行操作。

編寫web自動化測試的建議:

ü編寫自動化腳本時,若僅需要測試一小段簡單程序時,可以使用sikuli來編寫,若需要測試一個復雜的系統,則應以selenium為主,sikuli為輔(當有windows的操作時);

ü在有上傳文件、圖片等操作的自動化測試中,用sikuli的圖片識別技術更為方便;

ü用sikuli來編寫代碼時,所截到的圖片應該避免雷同,且盡量縮小范圍,便于執行點擊、填寫等操作時,由于范圍過大而定位錯誤;

ü摻有sikuli jar包的代碼,運行時必須在本機使用,不得換其他計算機操作,若更換,需重新截取所操作計算機的截圖;

4.運行程序,運行結果如下圖:

利用sikuli對android進行自動化測試的流程

1.將得到的sikulixpai.jar導入程序中

2.導入要進行測試app的apk

3.安裝小蘿貝控機大師并關聯到手機,控機后頁面如下圖:

4.編寫java代碼

代碼如下:

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.sikuli.script.FindFailed;

import org.sikuli.script.Screen;

public class SikuliTest {

@Test

public void addContact() throws FindFailed, InterruptedException{

//獲得電腦桌面屏幕內容

Screen s = new Screen();

//圖片存儲路徑

String imgpath=”D:\\eclipse-jee-mars-2-win32-x86_64\\Appium_demo\\pics\\”;

//點擊最小化,最小化eclipse

s.click(“D:\\eclipse-jee-mars-2-win32-x86_64\\Appium_demo\\pics\\min1.png”);

//找到桌面上控機大師中的圖標

s.find(imgpath+”Contect.png”);

s.click(imgpath+”Contect.png”);

Thread.sleep(1000);

s.click(imgpath+”AddContact.png”);

Thread.sleep(1000);

//輸入contactname為some

s.type(imgpath+”Contactname.png”, “some”);

s.click(imgpath+”Contactemail.png”);

Thread.sleep(1000);

s.type(imgpath+”Contactemail.png”, “some@163.com”);

Thread.sleep(5000);

s.click(imgpath+”save.png”);

System.out.println(“App is done!”);

}

@After

public void tearDown() throws Exception {

//driver.quit();

}

}

使用appium編寫的測試android app腳本

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.android.AndroidDriver;

import io.appium.java_client.android.AndroidElement;

import java.io.File;

import java.net.URL;

import java.util.List;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.remote.DesiredCapabilities;

public class ContactsTest {

private AppiumDriver driver;

@Before

//打開該應用,進入主界面

public void setUp() throws Exception {

// set up appium

File classpathRoot = new File(System.getProperty(“user.dir”));

//app路徑

File appDir = new File(classpathRoot, “/apps”);

//app包

File app = new File(appDir, “ContactManager.apk”);

DesiredCapabilities capabilities = new DesiredCapabilities();

//設置設備器件名稱

capabilities.setCapability(“deviceName”,”4C3ETK1575017025″);

capabilities.setCapability(“platformVersion”, “4.4”);

capabilities.setCapability(“app”, app.getAbsolutePath());

capabilities.setCapability(“appPackage”, “com.example.android.contactmanager”);

capabilities.setCapability(“appActivity”, “.ContactManager”);

driver = new AndroidDriver<>(new URL(“http://127.0.0.1:4723/wd/hub”), capabilities);

System.out.println(“App is launched!”);

}

@Test

//測試添加聯系人的步驟

public void addContact(){

WebElement el = driver.findElement(By.name(“Add Contact”));

el.click();

List textFieldsList = driver.findElementsByClassName(“android.widget.EditText”);

textFieldsList.get(0).sendKeys(“Some Name”);

textFieldsList.get(2).sendKeys(“Some@example.com”);

driver.swipe(100, 500, 100, 100, 2);

driver.findElementByName(“Save”).click();

System.out.println(“App is done!”);

}

@After

public void tearDown() throws Exception {

driver.quit();

}

}

兩者區別:

üAppium的準確度高,而sikuli對圖片的要求很高;

üAppium寫好的代碼可以在任何計算機上使用,sikuli寫好的代碼僅允許在本機使用,因為圖片的識別會因為分辨率、背景顏色,圖片大小的變化而變化;

üAppium前期的環境搭建過于繁瑣,并且運行腳本時,需要打開appium的前期步驟也比較多,sikuli僅需簡單安裝小蘿貝控機大師即可;

üAppium代碼中前期需要配置的參數過多,而sikuli僅需按照日常手動操作中的步驟來進行即可。

編寫android app自動化測試的建議:

ü編寫安卓app自動化測試腳本時,若僅需要測試一小段簡單程序時,可以使用sikuli來編寫,若需要測試一個復雜的系統,則應用Appium;

ü用sikuli來編寫代碼時,所截到的圖片應該避免雷同,且盡量縮小范圍,便于執行點擊、填寫等操作時,由于范圍過大而定位錯誤;

ü摻有sikuli jar包的代碼,運行時必須在同一外置手機中使用,不得換其他手機操作,若更換,需重新截取所操作手機的截圖;

ü若需要測試手機app的某一單獨模塊時,則應使用appium,可以自動定義啟動哪一activity,省去前面一系列步驟。

4. 運行

Sikuli的優缺點

優點

1.與平臺無關

可以實現任意類型的UI(GUI)測試,輕松實現跨平臺測試,并可以解決web測試中的瀏覽器兼容性測試問題。

2.可讀性強

代碼可讀性強,用圖形表示邏輯關系更生動、形象,容易理解,便于維護。

3.提供.jar包

便于構建大型的測試框架,實現各類測試工具之間的互補。

4.用例設計與程序實施可分離

用例設計人員可以只關注圖型邏輯關系和測試檢查點,不需要懂得具體開發與程序語言基礎;程序實施人員可以只進行編程而不過多參與設計。

缺點

1、sikuli不支持中文,因此無論在編程中或者保存路徑,都不可以使用中文!否則運行報錯。

2、圖片的分辨率、色彩、尺寸、唯一性對程序的影響 (如果有兩個相同的,無法區分具體哪一個)

3、sikuli本身還不完善(處于開發、升級階段) 還有很多程序bug,能否繼續發展還是未知數

4、只認識當前活動的圖標(只有當前桌面有才行)

5、用例組織方面有提供但是目前有bug,還未調研嘗試便利性

6、截圖的話,腳本存儲占用空間較大

7、相似度調整需要手動一個個的調整,工作量大

總結

以上是生活随笔為你收集整理的sikuli python java_自动化测试之sikuli调研的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一区二区三区免费观看 | www,av在线| 国产视频污 | 狼性av懂色av禁果av | 亚洲av永久无码精品 | 国产最新在线观看 | 又骚又黄的视频 | 九九九在线视频 | 亚洲国产综合视频 | 成人在线小视频 | 亚洲人人夜夜澡人人爽 | 大战熟女丰满人妻av | 国产粉嫩呻吟一区二区三区 | 欧美极品jizzhd欧美爆 | 九九人人| 欧美日本一本 | 二区三区 | 91在线综合| 五月天亚洲色图 | 四川丰满少妇被弄到高潮 | 久久影院午夜 | 韩国精品一区二区 | 黄色大片a级 | 99香蕉网 | 色婷婷在线观看视频 | 日韩成人不卡 | 日韩有码在线播放 | 涩涩涩在线观看 | 国产视频在线观看一区 | 欧美一区二区黄片 | 欧美性高潮| 久久嫩草精品久久久久 | 国产尤物视频在线 | 最新永久地址 | 日韩欧美在线观看视频 | 国产精品videossex国产高清 | 狠狠爱夜夜 | 亚洲а∨天堂久久精品2021 | 韩国理论午夜 | 日韩色视频在线观看 | 特级黄毛片 | 中文字幕日韩精品一区 | va婷婷在线免费观看 | 日韩福利片在线观看 | 亚洲欧洲免费无码 | 韩国一级片在线观看 | 欧美福利影院 | 女人天堂网站 | 欧美高清日韩 | 寡妇一级片| 中文字幕区 | 人人叉人人| 日韩精品久久久久久久 | 精品人妻伦九区久久aaa片 | 日本少妇激三级做爰在线 | 山村大伦淫第1部分阅读小说 | 久久久久久免费毛片精品 | www日日日 | 日韩毛片在线视频 | 波多野一区二区 | 欧美美女性高潮 | 亚洲精品免费网站 | 麻豆资源| 亚洲成人精品在线观看 | www.奇米.com| 五色天婷婷 | 欧美性猛交xxxx乱大交3 | 亚洲高清中文字幕 | 亚洲精品666 | 中文字幕1区2区 | 日本xxxx裸体xxxx出水 | 男女偷爱性视频刺激 | 韩国三级中文字幕 | 青青草免费公开视频 | 中日韩av在线 | 日韩精品手机在线 | 国产成人精品亚洲男人的天堂 | fee性满足he牲bbw | 嫩草影院在线观看视频 | jiuse九色 | 美女视频在线免费观看 | 农村激情伦hxvideos | 一区二区三区四区精品 | 成人在线中文字幕 | 青青草视频在线观看免费 | 91网页入口 | 亚洲精品中文字幕在线观看 | 人超碰 | 久久精品国产亚洲AV无码男同 | 久久成人动漫 | 日本少妇毛茸茸高潮 | 成人一区二区三区在线 | 成年人a级片 | 免费看片成人 | 久久久欧美 | 午夜黄网| 国产传媒视频在线观看 | 亚洲AV无码精品色毛片浪潮 | 禁漫天堂免费网站 |