autojs分析,autojs介紹

本文目錄一覽:

分析一下autojs的坐標、控制項、找圖、找色

1~坐標點擊就是直接點擊某個點,這個點是固定的,所以在不同解析度兼容性差,所以不推薦使用,不詳說,主要說說其他幾個

2~控制項點擊是autojs左右特點的一項功能,它是基於安卓的無障礙功能的,在軟體上有很好的支持,但是遊戲就不行了。具體的教程很多,不多說了,就說說我在使用時踩得一些坑。

①有些控制項能用autojs的工具找到,但是寫出來後卻識別不出來,手動滑動一下屏幕就能找到了,不知道是不是BUG,所以加個判斷,防止找不到腳本出錯

②尋找控制項建議不要用findOne()、waitFor()、exists()等一些會阻塞的方法,不然稍微出現一點其他事件就會阻塞,導致腳本莫名其妙的卡死,使用findOne(timeout)、findonce()時可以加個判斷在不為null的時候再點擊或其他操作,因為沒找到返回null,直接click就會報錯,腳本停止運行,要是是找的父或者子控制項也寫到判斷里

③找圖找色特別消耗內存,所以在能用控制項就用控制項,找圖找色在找到後要用recycle()來對創建的圖像對象回收,提高腳本穩定,讓腳本能持續運行更長時間,截圖也需要一定的時間

④如果腳本有懸浮窗,使用找圖要注意不要將要找的圖遮擋

⑤控制項中使用text比id要靠譜一些,在一些軟體中id是會改變的

ps:如果有問題可以在評論區評論,會的我會解答,不定時更新,可以點點關注和小心心哦

Autojs原理

Auto.js 的核心參見

其中 runtime.api 的包便是各種api的封裝。

至於 apk 打包,參見 。

auto.js如何解析html

URL:

編寫思路(入門級別)

1、打開谷歌瀏覽器

2、打開博客園登錄網頁地址

3、在用戶名輸入框內輸入用戶名

4、在密碼輸入框內輸入密碼

5、點擊登錄

6、檢測是否跳轉到了登錄成功的頁面

腳本如下圖:

4feb5d799ae52eea8c1b063cc8c60f85.png

現在我們來分解下輸入用戶名這個動作

1、首先找到用戶名輸入框

2、在輸入框中輸入用戶名

【找到用戶名輸入框】實現此步驟的前提就是需要掌握控制項的定位。具體在腳本中實現也就是圖中的第11行:

(‘//*[@autocomplete=”username”]’)

WEB控制項定位所做的事情,就是通過特定的方式找到我們需要操作的頁面控制項

那麼如何才能學會這個控制項定位呢?第一步就是簡單了解下前端的語言。和我一起往下看即可輕鬆學會。

二、WEB網頁文本—HTML5

要想掌握WEB自動化測試的控制項定位,我們首選要了解控制項是什麼。

控制項就是瀏覽器展示的前端語言生成對象。

web前端的基礎語言就是HTML5

依舊是老套路,拿博客園舉例:

5faa8b60ca05f50f4c0d6430574214fd.png

用戶打開瀏覽器,看到的用戶名輸入框、密碼輸入框、登陸按鈕、立即註冊等等所有,都是瀏覽器展示的HTML5語言的對象。

我們按下F12鍵即可打開瀏覽器的調試模式,來查看網頁的HTML5源代碼。

如下圖:

按下F12後右邊頁面中Elements選項對應的就是網頁的html5代碼

第一次接觸肯定覺得非常晦澀難懂、雲里霧裡。但是相信我,萬事開頭難!你在看我自動化測試思維的文章以前不也是覺得自動化測試非常高大上嗎?

不了解什麼是自動化測試思維?戳下方5分鐘即可學會☟☟☟

【自動化測試入門】自動化測試思維

00a821b679ab09e913981cf6a655f861.png

HTML5一個控制項的寫法一般是2個尖括弧成對出現。

一、第一個尖括弧的第一個單次為控制項類型,之後是控制項屬性。

二、第二個尖括弧表示此控制項的尾部。

三、2個尖括弧中間為控制項在前端顯示的文字部分。

舉例說明的話。控制項類型是狗的類型(中華田園犬、哈巴狗、牧羊犬等),控制項屬性就是這條狗的名字、性別、體重、毛髮顏色等。2個尖括弧中間的文字,就是你想在此頁面上展示的這個狗的’名字’。

還是拿博客園的登陸界面舉例來說:

點擊’小箭頭’定位控制項,或者在控制項處右鍵選中’檢查元素’,即可定位到指定的控制項

7b1de1397c71dcde07d8d9da72e61ab5.png 控制項的源碼為:

input _ngcontent-miv-c141=””matinput=””formcontrolname=”username”placeholder=”登錄用戶名 / 郵箱”autocomplete=”username” id=”mat-input-0″ aria-describedby=”mat-error-0″ aria-invalid=”true” aria-required=”false”

input就是控制項類型

input以外的就都是控制項屬性

這個輸入框的控制項屬性有:

_ngcontent-miv-c141=””

matinput=””

formcontrolname=”username”

placeholder=”登錄用戶名 / 郵箱”

autocomplete=”username”

id=”mat-input-0″

aria-describedby=”mat-error-0″

aria-invalid=”true”

aria-required=”false”

三、基於控制項的唯一控制項屬性定位

了解了什麼是控制項,現在我們在上手控制項的定位。

selenium有八種定位控制項的方式,有6種都是基於HTML5原生控制項的單一控制項屬性來定位的。

id定位:

find_element_by_id()

name定位:

find_element_by_name()

class定位:

find_element_by_class_name()

tag定位:

find_element_by_tag_name()

link定位:

find_element_by_link_text()

partial_link定位:

find_element_by_partial_link_text()

以下兩種為特定的2種控制項定位方法,下一篇文章再做詳解。 xpath定位:find_element_by_xpath() CSS定位:find_element_by_css_selector()

下面我將舉例來講解這6種基於單一控制項屬性的定位方法。

還是拿博客園的登陸界面舉例來說:

833005656b1e6d0fa4a7e2cc58d875a5.png

登陸用戶名的輸入框的HTML5源碼為:

input _ngcontent-miv-c141=””matinput=””formcontrolname=”username”placeholder=”登錄用戶名 / 郵箱”autocomplete=”username” id=”mat-input-0″ aria-describedby=”mat-error-0″ aria-invalid=”true” aria-required=”false”

這個輸入框的控制項屬性有:

_ngcontent-miv-c141=””

matinput=””

formcontrolname=”username”

placeholder=”登錄用戶名 / 郵箱”

autocomplete=”username”

id=”mat-input-0″

aria-describedby=”mat-error-0″

aria-invalid=”true”

aria-required=”false”

對應的定位方法:

id屬性來定位此控制項

寫法為:

find_element_by_id(mat-input-0)

name屬性來定位此控制項

此控制項前端開發沒有定義name屬性,則無法使用此定位方法

tag屬性來定位此控制項(控制項的類型)

寫法為:

find_element_by_tag_name(‘input’)

class屬性來定位此控制項

寫法為:

find_element_by_class_name(mat-input-0)

另外兩種定位是針對link屬性的控制項,也就是鏈接控制項。如下圖:

依舊是老老路。使用博客園登陸頁舉例:

【立即註冊】就是頁面中的一個link控制項,其作用就是跳轉到註冊頁面。

fe0c7b4e9f770591aeaa13a7a9e5ec43.png

_ngcontent-arq-c141=”” href=”/signup?returnUrl=https:%2F%2F”立即註冊

他的控制項屬性有

link定位(通過link控制項的文本值)

find_element_by_link_text(‘立即註冊’)

但是部分頁面會存在,link的文本值非常長,所以就發明了partial_link定位。

如下圖中的百度文庫的某一頁面:

5ddb0ca6201cd203245824c06c9e7932.png link的文本值為:全國2018年10月04741計算機網路原理真題以及答案解析

定位的腳本就可以寫成:(只取文本的某一段值即可)

find_element_by_link_text(‘04741計算機網路’)

但是這樣的定位方式存在一個致命且常見的問題:

隨著前端的技術不斷的發展,頁面的複雜度越來越高。一個頁面的控制項越來越多(tag不唯一),id、name、class_name可能有很多重名或者完全是動態的一串字母(id、name、class_name、link_name可能都不唯一),我們基於唯一控制項屬性定位的在特別複雜的項目上可能完全無法完成UI自動化測試的定位工作。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258266.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:49
下一篇 2024-12-15 12:49

相關推薦

  • autojs註冊機源碼,autojs源碼編譯

    本文目錄一覽: 1、Auto註冊機激活碼顯示不出來 2、用這個auto.js編程軟體寫好腳本後,怎樣打包成APP。 3、Autojs微信運動自動點贊免root腳本源碼 4、手機au…

    編程 2025-01-13
  • 關於autojs語音代碼的信息

    本文目錄一覽: 1、autojs腳本一鍵打開微信掃一掃 2、autojs腳本實現自動接聽微信、QQ音視頻通話 3、autojs歌曲代碼 4、Autojs手機版教程 autojs腳本…

    編程 2024-12-16
  • autojs奇葩代碼的簡單介紹

    本文目錄一覽: 1、autojs腳本實現自動接聽微信、QQ音視頻通話 2、autojs死巡環內存爆炸 3、求把電腦用的按鍵精靈代碼轉譯為auto.js用的代碼 4、auto.js中…

    編程 2024-12-14
  • autojs黑屏代碼,autojs亮屏

    本文目錄一覽: 1、autojs一鍵鎖屏 2、autojs不能點亮 3、求把電腦用的按鍵精靈代碼轉譯為auto.js用的代碼 4、auto.js中怎麼循環好?我用百度複製的func…

    編程 2024-12-12
  • autojs實例大全的簡單介紹

    本文目錄一覽: 1、auto.js-01基於坐標的觸摸模擬 2、autojs死巡環內存爆炸 3、autojs歌曲代碼 4、auto.js怎麼實現等待按鈕出現再點擊? 5、autoj…

    編程 2024-12-11
  • 源碼autojs,源碼編輯器手機版下載

    本文目錄一覽: 1、手機autojs 怎樣host跳過活著屏蔽廣告源碼 2、Autojs微信運動自動點贊免root腳本源碼 3、auto.js如何解析html 手機autojs 怎…

    編程 2024-12-05
  • AutoJS文檔全方位詳解

    一、概述 AutoJS是一款基於JavaScript的Android應用自動化工具,提供了Android應用中的諸多操作,可以實現自動化測試、批量操作等多種應用場景。本篇文章將從多…

    編程 2024-12-05
  • autojs屏蔽微信,autojs打開微信

    本文目錄一覽: 1、autojs不識別微信控制項 2、autojs不能識別微信小程序控制項 3、如何用js屏蔽微信內置瀏覽器打開視頻後右上角的分享按鈕 4、autojs不支持主流軟體 …

    編程 2024-11-10
  • autojs跳轉網頁,autojs翻頁

    本文目錄一覽: 1、autojs怎麼運行腳本回到第一步 2、auto.js如何解析html 3、autojs用微信打開url 4、js如何在指定頁面跳轉到另一指定頁面 5、誰給我發…

    編程 2024-11-01
  • 編譯autojs,編譯程序屬於什麼軟體

    本文目錄一覽: 1、Auto js自動化腳本怎麼在電腦上開發 2、Autojs原理 3、哪裡可以學習autojs開發? 4、autojs怎麼運行腳本回到第一步 Auto js自動化…

    編程 2024-10-29

發表回復

登錄後才能評論