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
【selenium】Selenium基於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