移動Android和IOS自動化中常見問題

  1. APP測試邏輯

在app編寫自動化測試用例時,通常會出現只是簡單的點點點過程,然而卻忽略了在實際的自動化實現過程中,軟件是對app元素的判斷來執行測試腳本。所以會出現在后期已經寫好自動化腳本之后還會對測試用例的更新。

  1. App在測試時,每個頁面的每個元素都需要點擊測試其功能性,相同頁面具有一致性,測試一次即可,但是相同按鈕在不同頁面,就需要再測試一次。
  2. Android怎么獲取元素的值?其屬性是什么?

答:Android也可以使用.getcondext獲取元素的值,且獲取的值屬性為string類型。

  1. 如何正確使用可點擊的id?

答:通常Android獲取id時,截取“id:”后面的即可。如果只存在id值,不存在id屬性通常有的前綴,這種情況下就無法通過id點擊。則需要通過其他方式對元素進行點擊。

  1. 如何判斷當前頁面是Native還是webview?

答:通過context獲取當前的頁面的類型。在有的頁面,會出現h5被強轉為Native頁面,這時的頁面則不支持webview操作,由于有的元素被隱藏,通過viewlist就很難點擊到相應的元素,所以只能通過tap點擊。

  1. 在點擊之后或者頁面跳轉之后需要設置等待時間,使用sleep無效怎么辦?

答:可以通過對靜態元素(點擊之后沒反應的元素)進行重復點擊,自帶的sleep只有在不存在該元素時才會執行。

  1. Android自動化測試存在appium獲取當前頁面元素數據太大導致app卡死嗎?

不會,數據量太大時,只是當前頁面無法獲取。

  1. Android自帶鍵盤刪除

newtest.clearById((AndroidDriver) driver,67,Id);

  1. 在IOS安裝過程中,有什么需要注意的?

答:appium、Xcode下載的版本需要對應,各個版本都有不同的支持,同時還要注意測試機的版本,對應情況如下:

  1. 安裝完成之后,如何配置環境變量?

答:mac本身是不存在環境變量配置文件的,需要新建。首先打開終端輸入命令touch .bashprofile新建文件,然后輸入命令vi .bash profile打開該文件,然后在文件內設置環境變量:??

export ANDROID_HOME=/Applications/Android-sdk-macosxexport APPIUM_HOME=/Applications/Appium.app/Contents/Resources/node_modules/export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Homeexport AAPT_HOME=/Applications/android-sdk-macosx/build-tools/export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$APPIUM_HOME/.bin:$AAPT_HOME/23.0.3/?? (如果是在mac上面實現android的自動化就需要這句)

然后在退出編寫的文件時注意,編寫完成后按esc并輸入wq再按ENTER以達到保存并退出,如果輸入q則不保存直接退出。

  1. 如何查看新的軟件的BundleID?

答:首先需要設置手機查看權限,在終端輸入命令:sudo chmod –R 777 /var/db/lockdown/,在輸入密碼時,輸入的密碼不會顯示,輸入完成后直接ENTER;再輸入:ideviceinstaller –l查看手機上軟件的信息,即可顯示軟件的BundleID。

  1. 如何獲取和判斷元素的值?

答:獲取元素的值為driver.findElementByXpath().getcondext。判斷元素的值可分為完全判斷和關鍵詞判斷,完全判斷使用equals。但是在實際的很多地方,元素值往往很長,或者只有一些關鍵詞不變,所以就需要使用contains進行關鍵詞判斷。

  1. IOS如何實現滑動操作?

答:由于appium的自身的限制,大概從1.3.7版本之后就不支持swipe操作,當前版本為1.4.13,因此在滑動方面存在很大約束。目前本人的操作是根據button屬性的XPath路徑點擊,但是這樣做是會出現報錯并結束程序執行,因此使用try catch使程序繼續執行,再根據得到的最新的顯示頁面對相應元素進行tap點擊。由于很多需要滑動的頁面不存在button屬性的XPath,所以在滑動方面受到了很大的限制。以下代碼可能適用于某些版本,可嘗試

#pythondiretion = up | down | left | right#標準指向滑動driver.execute_script("mobile: scroll", [{"direction":direction}])#基于控件的指向滑動driver.execute_script("mobile: scroll", [{"direction":direction, element: element.id}])
  1. 一些第一次能點擊,后面再點擊就出現錯誤的特殊情況及解決方法。

答:在點擊同一個XPath時,第二次無法點擊且報錯。可以通過對元素的其他屬性來點擊該元素,如name或者直接使用坐標進行tap。有的app前面版本支持根據name點擊,但是到了后期版本會出現該name明明能被打印出來,但是就是在點擊時報錯。可以通過XPath點擊或者直接tap。

  1. IOS的app在自動化測試的一些bug需要注意。
  1. 一個頁面的數據量太大導致app卡死
  2. 根據name點擊,會點擊成別的元素
  1. Mac OS X問題appium1.4無法在mac10.10以上使用

(1) 在終端打開文件 vi

?/Applications/Appium.app/Contents/Resources/node_modules/appium/lib/doctor/ios.js

(2) 在適當位置添加代碼else?if?(stdout.match('10.9')?!==?null)?{
????????this.osVersion?=?'10.9';
????????cb(null,?"Mac?OS?X?10.9?is?installed.");
??????}??

10.9改為當前mac版本號

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71894.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python高效試用17---兩個字符串組成一個新的字符串和兩個字符串組成元組作為key哪個更高效

在 Python 中,使用字符串連接 (str1 str2) 作為 key 和使用元組 ((str1, str2)) 作為 key 的效率差異,主要受以下因素影響: 哈希計算速度: 字符串連接 (str1 str2):會創建一個新的字符串對象,并計算哈希…

深入淺出Java try-with-resources:告別資源泄漏的煩惱

一、為什么需要try-with-resources? 在Java開發中,我們經常需要處理各種資源:文件流、數據庫連接、網絡套接字等。這些資源都有一個共同特點——必須在使用后正確關閉。傳統的資源管理方式存在三大痛點: 代碼臃腫:每…

Python+DeepSeek:開啟AI編程新次元——從自動化到智能創造的實戰指南

文章核心價值 技術熱點:結合全球最流行的編程語言與國產頂尖AI模型實用場景:覆蓋代碼開發/數據分析/辦公自動化等高頻需求流量密碼:揭秘大模型在編程中的創造性應用目錄結構 環境搭建:5分鐘快速接入DeepSeek場景一:AI輔助代碼開發(智能補全+調試)場景二:數據分析超級助…

Linux tcpdump -any抓的包轉換成標準的pcap

在 Linux 中使用 tcpdump -any 抓包并轉換為標準 pcap 文件時出現額外字段,通常與 鏈路層協議頭部的差異 以及 pcap 文件格式的兼容性 有關。以下是詳細原因和解決方案: 一、問題原因分析 -any 選項的局限性 tcpdump -any 會自動猜測鏈路層協議類型(如 Ethernet、IEEE 802…

【SpringMVC】深入解析使用 Postman 在請求中傳遞對象類型、數組類型、參數類型的參數方法和后端參數重命名、及非必傳參數設置的方法

SpringMVC—請求傳參 1. 傳遞對象 如果參數比較多時,方法聲明就需要有很多形參;并且后續每次新增一個參數,也需要修改方法聲明. 我們不妨把這些參數封裝為一個對象; Spring MVC 也可以自動實現對象參數的賦值,比如 Us…

一個差勁的軟件設計

項目概況: 之前自己設計并開發了一個用C#開發的上位機軟件,整個軟件只有一個Form,一個TabControl,3個TabControlPanel,總共100多個lable、textbox、ListBox等控件都放在這3個TabControlPanel里。 問題: 1.…

Linux練級寶典->進程控制詳解(進程替換,fork函數)

目錄 進程創建 fork函數 寫時拷貝 進程終止 進程退出碼 exit函數 _exit函數 return,exit _exit之間的區別和聯系 進程等待 進程等待的必要性 獲取子進程status 進程等待的方法 wait waipid 多子進程創建理解 非阻塞輪詢檢測子進程 進程程序替換 替…

RabbitMq--消息可靠性

12.消息可靠性 1.消息丟失的情況 生產者向消息代理傳遞消息的過程中,消息丟失了消息代理( RabbitMQ )把消息弄丟了消費者把消息弄丟了 那怎么保證消息的可靠性呢,我們可以從消息丟失的情況入手——從生產者、消息代理&#xff0…

Windows中在VSCode/Cursor上通過CMake或launch文件配置CUDA編程環境

前置步驟 安裝符合GPU型號的CUDA Toolkit 配置好 nvcc 環境變量 安裝 Visual Studio 參考https://blog.csdn.net/Cony_14/article/details/137510909 VSCode 安裝插件 Nsight Visual Studio Code Edition 注意:不是vscode-cudacpp。若兩個插件同時安裝,…

Spark(8)配置Hadoop集群環境-使用腳本命令實現集群文件同步

一.hadoop的運行模式 二.scp命令————基本使用 三.scp命令———拓展使用 四.rsync遠程同步 五.xsync腳本集群之間的同步 一.hadoop的運行模式 hadoop一共有如下三種運行方式: 1. 本地運行。數據存儲在linux本地,測試偶爾用一下。我們上一節課使用…

聚焦兩會:科技與發展并進,賽逸展2025成創新新舞臺

在十四屆全國人大三次會議和全國政協十四屆三次會議期間,代表委員們圍繞多個關鍵議題展開深入討論,為國家未來發展謀篇布局。其中,技術競爭加劇與經濟轉型需求成為兩會焦點,將在首都北京舉辦的2025第七屆亞洲消費電子技術貿易展&a…

【音視頻】ffmpeg命令提取像素格式

1、提取YUV數據 提取yuv數據,并保持分辨率與原視頻一致 使用-pix_fmt或-pixel_format指定yuv格式提取數據,并保持原來的分辨率 ffmpeg -i music.mp4 -t "01:00" -pixel_format yuv420p music.yuv提取成功后,可以使用ffplay指定y…

【從零開始學習計算機科學】計算機體系結構(二)指令級并行(ILP)

【從零開始學習計算機科學】【從零開始學習計算機科學】計算機體系結構(二)指令級并行(ILP) ILP流水線(pipeline)流水線調度循環展開和循環流水循環展開。循環展開的具體步驟可以描述為,軟件流水(循環流水)。我們可以通過流水線的思想處理循環的執行,即不需要這一次的…

android edittext 防止輸入多個小數點或負號

有些英文系統的輸入法,或者定制輸入法。使用xml限制不了輸入多個小數點和多個負號。所以代碼來控制。 一、通過XML設置限制 <EditTextandroid:id="@+id/editTextNumber"android:layout_width="wrap_content"android:layout_height="wrap_conten…

2019年藍橋杯第十屆CC++大學B組真題及代碼

目錄 1A&#xff1a;組隊&#xff08;填空5分_手算&#xff09; 2B&#xff1a;年號字符&#xff08;填空5分_進制&#xff09; 3C&#xff1a;數列求值&#xff08;填空10分_枚舉&#xff09; 4D&#xff1a;數的分解&#xff08;填空10分&#xff09; 5E&#xff1a;迷宮…

從C#中的MemberwiseClone()淺拷貝說起

MemberwiseClone() 是 C# 中的一個方法&#xff0c;用于創建當前對象的淺拷貝&#xff08;shallow copy&#xff09;。它屬于 System.Object 類&#xff0c;因此所有 C# 對象都可以調用該方法。 1. MemberwiseClone() 的含義 淺拷貝&#xff1a;MemberwiseClone() 會創建一個新…

筆記六:單鏈表鏈表介紹與模擬實現

在他一生中&#xff0c;從來沒有人能夠像你們這樣&#xff0c;以他的視角看待這個世界。 ---------《尋找天堂》 目錄 文章目錄 一、什么是鏈表&#xff1f; 二、為什么要使用鏈表&#xff1f; 三、 單鏈表介紹與使用 3.1 單鏈表 3.1.1 創建單鏈表節點 3.1.2 單鏈表的頭插、…

尚硅谷爬蟲note15n

1. 多條管道 多條管道開啟&#xff08;2步&#xff09;&#xff1a; (1)定義管道類 &#xff08;2&#xff09;在settings中開啟管道 在pipelines中&#xff1a; import urllib.request # 多條管道開啟 #(1)定義管道類 #&#xff08;2&#xff09;在setti…

oracle檢查字段為空

在Oracle數據庫中&#xff0c;檢查字段是否為空通常涉及到使用IS NULL條件。如果你想查詢某個表中的字段是否為空&#xff0c;你可以使用SELECT語句結合WHERE子句來實現。這里有一些基本示例來展示如何進行這樣的查詢。 示例1: 檢查單個字段是否為空 假設你有一個表employees…

虛幻基礎:動畫層接口

文章目錄 動畫層&#xff1a;動畫圖表中的函數接口&#xff1a;名字&#xff0c;沒有實現。動畫層接口&#xff1a;由動畫藍圖實現1.動畫層可直接調用實現功能2.動畫層接口必須安裝3.動畫層默認使用本身實現4.動畫層也可使用其他動畫藍圖實現&#xff0c;但必須在角色藍圖中關聯…