1. 程式人生 > >selenium webdriver 實現Canvas畫布自動化測試

selenium webdriver 實現Canvas畫布自動化測試

canvas 是一個畫布,定位元素時只能定位到畫布上,如下乳所示,網頁上有一張類似於下圖的eChart報表圖片。selenium的基本定位方式只能定位到該畫布上,畫布上的子元素通過selenium的基礎定位方式是定位不到的, 此時就需要使用selenium的js注入的方式,通過插入js指令碼的方式獲取索要操作的元素座標。 再使用action對應的方法去執行對應的操作。

1: 建立注入js方法。用於獲取canvas畫布上的具體元素訊息

window.T={
	getCanvasId:function (id){ 
	var cache = *****.echartCache; 
	var instances = [];
	for (var key in cache){
		//alert(key);
		if (key.indexOf(id) != -1){
		instances.push(key);
		}
	}
	return instances 
	} 
}

2: 通過如下js.executeScript方法將js指令碼注入頁面。

String jsCode=getText("e:/jsb.js");
Object a=js.executeScript(jsCode);

3: 通過再次注入js指令碼的方式呼叫剛剛注入的js方法,獲取元素在canvas上的元素座標。

 String script = "return window.T.getCanvasId(\"" + keys + "\")";
 Object object = js.executeScript(script);
 logger.info(object);
    static String  getText(String path) {
        File file=new File(path);
        String out=null;
        StringBuilder result=new StringBuilder();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//構造一個BufferedReader類來讀取檔案
            String s = null;
            while((s = br.readLine())!=null){//使用readLine方法,一次讀一行
                result.append(s+"\n");
            }
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        out=result.toString();
        return out;
    }

4: 然後,使用action相關方法更具js獲取到的x、y座標進行操作。 

/**
	 *左鍵點選元素上的具體座標位置
	 * @param driver
	 * @param abnormElement  需要點選的元素
	 * @param x 需要點選的元素上的點的X座標
	 * @param y 需要點選的元素上的點的Y座標
	 */
	public static void mouseClick(WebDriver driver, WebElement abnormElement, int x, int y) {
		Actions actions = new Actions(driver);    
		actions.release();
		actions.moveToElement(abnormElement, x, y).click().build().perform();
	}
   
	/**
	 *右鍵點選元素上的具體座標位置
	 * @param driver
	 * @param abnormElement  需要點選的元素
	 * @param x 需要點選的元素上的點的X座標
	 * @param y 需要點選的元素上的點的Y座標
	 */
	public static void mouseRightClick(WebDriver driver, WebElement abnormElement, int x, int y) {
		Actions actions = new Actions(driver);    
		actions.release();
	    actions.moveToElement(abnormElement, x, y).contextClick().build().perform();
	}
	
	
	/**
	 *拖拽元素上的具體座標位置
	 * @param driver
	 * @param abnormElement  需要點選的元素
	 * @param x 需要點選的元素上的點的X座標
	 * @param y 需要點選的元素上的點的Y座標
	 */
	public static void mouseMoveto(WebDriver driver, WebElement abnormElement, int x, int y){
		Actions actions = new Actions(driver);    
		actions.release();
	    actions.moveToElement(abnormElement, x, y).clickAndHold().release().build().perform();
	}
	
	/**
	 * 拖拽元素上的具體座標位置
	 * @param driver
	 * @param abnormElement  需要點選的元素
	 * @param x 需要拖拽元素點的X座標
	 * @param y 需要拖拽元素點的Y座標
	 * @param to_x 拖拽元素點目標位置的X座標
	 * @param to_y 拖拽元素點目標位置的Y座標
	 */
	public static void mouseDragAndDrop(WebDriver driver, WebElement abnormElement, int x, int y,int to_x,int to_y){
		Actions actions = new Actions(driver);    
		actions.release();
	    actions.moveToElement(abnormElement, x, y).clickAndHold().moveByOffset(to_x,to_y).release().build().perform();    
	}

相關推薦

selenium webdriver 實現Canvas畫布自動化測試

canvas 是一個畫布,定位元素時只能定位到畫布上,如下乳所示,網頁上有一張類似於下圖的eChart報表圖片。selenium的基本定位方式只能定位到該畫布上,畫布上的子元素通過selenium的基礎定位方式是定位不到的, 此時就需要使用selenium的js注入的方式,通

基於 Selenium WebDriver 的 Web 應用自動化測試(JS版)

https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/index.html 為什麼要使用Javascript語言進行自動化測試 相比Java或者Python學習門檻較低,環境安裝簡單,容易上手。 建立測試專案 初始化

一隻自動化測試小白的學習記錄——Python+Selenium+pip+webdriver下載安裝 python自動化測試環境配置

軟體測試小白自學了幾天的自動化測試 簡單總結一下最近學的知識((●'◡'●))1.首先在電腦上安裝python 我安裝的是3.5.4 -64位 版本 配置環境變數附上鍊接:https://pan.baidu.com/s/1XkGzvHcocgzgEtSm7PogoA 密碼:v

一隻自動化測試小白的學習記錄——Python+Selenium+Sublime 運用API、元素定位、元素操作方法、滑鼠鍵盤事件實現入門Web自動化測試

題外話:之前做一些自動化測試的入門實驗都是用的Python的IDLE進行編寫的,正兒八經的好處(可以一行一行地執行,因此能夠直觀地看到對於網頁測試的每一步變化,也能夠明確地知道在哪一步出了錯),不知所云的壞處(沒有一下子執行指令碼程式的成就感?????(黑人嚴肅臉)) 。於是

python結合excel數據輕松實現接口自動化測試(一)

判斷 原因 一個 軟件測試 測試 相等 fin 完成 想去 在剛剛進入測試行業的時候,最開始也是做功能測試,我想很多夥伴和我一樣,覺得自動化測試都很高端,很神秘。迫不及待的想去學習作自動化測試。 以前比較常用數據庫+python做自動化,後面發現excel個人覺得更加適合,

Jmeter實現接口自動化測試

fcc 針對 pro http als 自定義 設定 成功 sub 一、環境準備 1.Jdk1.7或以上: 下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331

seleniumSelenium基於Python3的Web自動化測試腳本在IE上運行慢的解決方法

drivers 解決方法 bsp exe com 32位 方法 解決辦法 文本 闡述問題: 執行自動化腳本時,發現文本輸入在IE瀏覽器上特別慢,這樣大大降低了自動化效率 解決辦法:原因是原先下載的IEDriverServer.exe為64位系統的IE,換為32位的IED

windows7 python3.63使用selenium+webdriver 實現自動登錄使用過程

selenium webdriver python3 本人用的是python3.63版本 這裏會講到安裝時所遇到的問題 這裏是根據火狐瀏覽器來操作的 1、首先安裝selenium 在 windows 的 cmd窗口通過pip 沒安裝pip的小夥伴自行去搜搜相關pip安裝方法pip in

PO設計模式-實現移動端自動化測試

nbsp 中文 std 執行 IV 對象 time 等待 quit 開發環境:python 3.6.5 + selenium 2.48.0 + pytest框架 + Android 5.1 工具:pycharm + Appium + Genymotion 測試機型:Sams

Selenium基於Python 進行 web 自動化測試

對象 little syn can chang 執行 pri lba 版本 From: https://www.cnblogs.com/hanxiaobei/p/6108677.html 配置使用環境 下載相應的瀏覽器驅動, Firefox 是默認的 本文以 chrom

使用jmeter+ant+jenkins實現接口自動化測試

文件路徑 dcb 提交 創建 text inux 目錄 ffffff 地址 本次使用linux環境搭建自動化框架 配置ANT ?首先下載Ant壓縮包,下載地址https://ant.apache.org/bindownload.cgi?解壓下載的ant包,然後復制jm

使用jmeter+maven+jenkins實現restful介面自動化測試

一、環境搭建 安裝 jdk、eclipse、git Jdk下載路徑:http://rj.baidu.com/soft/detail/14459.html?ald Eclipse線上安裝包下載地址:http://www.eclipse.org/downl

搭建一個 c# + selenium + winform + 谷歌瀏覽器 -- 自動化測試環境

搭建一個 c# + selenium + winform + 谷歌瀏覽器 – 自動化測試環境 1、需要環境 Visual Studio 2017 winformapp 測試應用 .net 4.5 windows 10 谷歌瀏覽器 2、wi

Java&Selenium&TestNG&ZTestReport 自動化測試並生成HTML自動化測試報告

一、摘要 本篇博文將介紹如何藉助ZTestReport和HTML模版,生成HTML測試報告的ZTestReport 原始碼Clone地址為 https://github.com/zhangfei19841004/ztest,其中ZTestReport.java 和其template是我們需要的關

Python&Selenium&Unittest&BeautifuReport 自動化測試並生成HTML自動化測試報告

一、摘要 本篇博文將介紹如何藉助BeautifulReport和HTML模版,生成HTML測試報告的BeautifulReport 原始碼Clone地址為 https://github.com/TesterlifeRaymond/BeautifulReport,其中 BeautifulReport.py和

App自動化測試探索(一)借助Appium實現APP的自動化測試

網絡 辦公 EDA 同時 修改 社區 重新 環境準備 測試框架 移動應用測試十大要領: 選擇系統平臺 選擇測試設備的品牌 註意行業和設備區分 關註Android的更新 不要忘記老設備 靈活使用Web分析工具 註意區分地區、運營商和網絡技術 掌握只能手機的屏幕分辨率分布情況

利用Postman實現簡單的自動化測試

1. 關於tests[]斷言  對於系統整套介面的測試最好是建立系統相關的Collection,便於以後測試,測試指令碼採用的是JavaScript語法編寫,指令碼主要寫的位置在Pre-request Script和Tests兩個欄目中,Pre-request

BeautifulReport 實現app UI自動化測試

修改了 BeautifulReport原始碼中的一些內容<附:BeautifulReport--適用於unittest自動化測試的視覺化報告>; 1.生成截圖時,原來的img資料夾必須在專案根目錄下,做了調整; 2.生成的截圖無法在html報告上展示,老是會報路徑錯誤,檢查發現原始碼中在做

基於webdriver的web UI自動化測試框架(系統架構+測試指令碼應用架構)

1.首先是自動化測試系統架構如下圖: 2.測試指令碼的應用架構: 3實際應用後的工程結構: 框架的配置檔案(只是簡單的用properties檔案) #------------------# #  測試框架配置 #------------------# #

Python學習筆記13:selenium webdriver 實現驗證碼登入

#通過ActionChains+autoit進行驗證碼圖片的下載,通過pytesseract識別驗證碼中的字元,由於有一定錯誤率,進行重試直至成功from selenium import webdriver from LanternAnswer.login import Lo