04 APP 自動化- Appium toast 元素定位列表滑動

文章目錄

      • 一、toast 元素的定位
      • 二、滑屏操作

一、toast 元素的定位

toast 元素就是簡易的消息提示框,toast 顯示窗口顯示的時間有限,一般3秒左右

# -*- coding=utf-8 -*-
from time import sleep
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as Ec# 設置操作終端的配置參數
desired_caps = dict(platformName='Android', # 指定操作系統platformVersion='12',# 指定操作系統版本automationName='Uiautomator2',# 默認框架deviceName='127.0.0.1:62001',# 指定設備名稱appPackage='com.tal.kaoyan',# 被操作的應用程序包名appActivity='com.tal.kaoyan.ui.activity.SplashActivity',# 啟動頁面noReset='true',# true--不重置  false--重置app='F:\Pycharm\AppAuto\kaoyan_v4.5.3.apk'  # apk文件所在路徑
)
# 發送命令給 appium server
driver = webdriver.Remote('http://127.0.0.1:4723', options=UiAutomator2Options().load_capabilities(desired_caps))
#-------------手機號密碼登錄----------------
phone_loc = (AppiumBy.ID, 'com.tal.kaoyan:id/loginEmailEdittext')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(phone_loc))
phone_input = driver.find_element(*phone_loc)
# 清空手機號輸入框
phone_input.clear()
# 輸入手機號
phone_input.send_keys('15956423841')password_input = driver.find_element(AppiumBy.ID, 'com.tal.kaoyan:id/rtlLoginLayout')
# 清空密碼輸入框
# password_input.clear()
# clear()方法無效,可以模擬鍵盤操作手動刪除文本框內容
password_input.click()
driver.press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67)# 輸入密碼
# password_input.send_keys('121335')
# send_keys() 無效,模擬鍵盤輸入
driver.press_keycode(8).press_keycode(14).press_keycode(14).press_keycode(8).press_keycode(7)protocol_agree_check = driver.find_element(AppiumBy.ID, 'com.tal.kaoyan:id/loginTreatyCheckboxPassword')
checked = protocol_agree_check.get_attribute("checked")
# 未勾選同意協議,則進行點擊同意協議
if checked == 'false':protocol_agree_check.click()login_btn = driver.find_element(AppiumBy.ID, 'com.tal.kaoyan:id/loginLoginBtn')
# 點擊登錄
login_btn.click()toast_loc = (AppiumBy.XPATH, "//*[contains(@text,'帳號或密碼錯誤')]")
# 顯示等待
WebDriverWait(driver, 15,0.01).until(Ec.presence_of_element_located(toast_loc))
toast_text = driver.find_element(*toast_loc).text
print("獲取 toast 元素的文本內容:",toast_text)

二、滑屏操作

  • 同一個水平位置左滑:
    • 開始位置與結束位置的坐標特點:
      • Y坐標相同
      • x坐標從大到小
  • 同一個水平位置右滑:
    • 開始位置與結束位置的坐標特點:
      • Y坐標相同
      • x坐標從小到大
  • 上滑:
    • 開始位置與結束位置的坐標特點:
      • X坐標相同
      • Y坐標從大到小
  • 下滑:
    • 開始位置與結束位置的坐標特點:
      • X坐標相同
      • Y坐標從小到大

# -*- coding=utf-8 -*-
from appium import webdriver
from appium.options.android import UiAutomator2Options# 設置操作終端的配置參數
desired_caps = dict(platformName='Android', # 指定操作系統platformVersion='12',# 指定操作系統版本automationName='Uiautomator2',# 默認框架deviceName='127.0.0.1:62001',# 指定設備名稱appPackage='com.tal.kaoyan',# 被操作的應用程序包名appActivity='com.tal.kaoyan.ui.activity.SplashActivity',# 啟動頁面noReset='true',# true--不重置  false--重置app='F:\Pycharm\AppAuto\kaoyan_v4.5.3.apk'  # apk文件所在路徑
)
# 發送命令給 appium server
driver = webdriver.Remote('http://127.0.0.1:4723', options=UiAutomator2Options().load_capabilities(desired_caps))
#實現滑屏
# 獲取整個app屏幕的大小
size = driver.get_window_size()
x = size["width"]
y = size["height"]
# 左滑2次
for i in range(0,2):driver.swipe(start_x=x*0.9,end_x=x*0.2,start_y=y*0.9,end_y=y*0.9,duration=1000)
print("實現左滑兩次")
# 右滑2次
for i in range(0,2):driver.swipe(start_x=x*0.2,end_x=x*0.9,start_y=y*0.9,end_y=y*0.9,duration=1000)
print("實現右滑兩次")

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

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

相關文章

C/C++ OpenCV 矩陣運算

C/C OpenCV 矩陣運算詳解 💡 OpenCV 是一個強大的開源計算機視覺和機器學習庫,它提供了豐富的矩陣運算功能,這對于圖像處理和計算機視覺算法至關重要。本文將詳細介紹如何使用 C/C 和 OpenCV 進行常見的矩陣運算。 矩陣的創建與初始化 在進…

基于大模型的 UI 自動化系統

基于大模型的 UI 自動化系統 下面是一個完整的 Python 系統,利用大模型實現智能 UI 自動化,結合計算機視覺和自然語言處理技術,實現"看屏操作"的能力。 系統架構設計 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…

USB擴展器與USB服務器的2個主要區別

在現代辦公和IT環境中,連接和管理USB設備是常見需求。USB擴展器(常稱USB集線器)與USB服務器(如朝天椒USB服務器)是兩類功能定位截然不同的解決方案。前者主要解決物理接口數量不足的“近身”連接擴展問題,而…

Nuxt.js 中的路由配置詳解

Nuxt.js 通過其內置的路由系統簡化了應用的路由配置,使得開發者可以輕松地管理頁面導航和 URL 結構。路由配置主要涉及頁面組件的組織、動態路由的設置以及路由元信息的配置。 自動路由生成 Nuxt.js 會根據 pages 目錄下的文件結構自動生成路由配置。每個文件都會對…

驗證負載均衡與彈性伸縮

什么是彈性伸縮(Auto Scaling)? 彈性伸縮是指 云計算平臺根據實時負載自動調整計算資源(如服務器實例、容器Pod)數量,以確保系統在高峰時保持穩定,在低谷時節省成本。 什么時候會觸發彈性伸縮&…

區分viewmodel和model職責的方法

gpt回答挺好的,我就分享一下。 1. 最經典的一句話區分 Model(Repository/數據層):只負責**“數據獲取/存儲/持久化”和“核心業務算法”**,不依賴UI層和Android框架,可以脫離界面獨立存在。 ViewModel&…

C語言數據結構筆記3:Union聯合體+結構體取8位Bool量

本文銜接上文要求,新增8位bool量的獲取方式。 目錄 問題提出: Union聯合體struct結構體(方式1): Union聯合體struct結構體(方式2): BYTE方式讀取: 問題提出: 在STM32單片機的編程中,無法定義Boo…

三種讀寫傳統xls格式文件開源庫libxls、xlslib、BasicExcel的比較

最近準備讀寫傳統xls格式文件,而不是較新的xlsx,詢問DeepSeek有哪些開源庫,他給出了如下的簡介和建議,還給出了相應鏈接,不過有的鏈接已失效。最后還不忘提醒,現在該用xlsx格式了。 以下是幾個可以處理傳統…

從測試角度看待CI/CD,敏捷開發

什么是敏捷開發? 是在高強度反饋的情況下,短周期,不斷的迭代產品,滿足用戶需求,搶占更多的市場 敏捷開發是什么? 是一種產品快速迭代的情況下,降低出錯的概率,具體會落實到公司的…

figma MCP + cursor如何將設計稿生成前端頁面

一、準備工作 figma MCP需要通過figma key來獲取設計稿權限,key的生成步驟如下 1. 打開figma網頁版/APP,進入賬戶設定 2. 點擊生成token 3. 填寫內容生成token(一定要確認復制了,不然關閉彈窗后就不會顯示了) 二、配置MCP 4. 進入到cursor…

git互聯GitHub 使用教程

一、下載git Git 公司 右鍵 git config --global user.name "name" git config --global user.email "email" ssh-keygen -t rsa -C email :生成的ssh密鑰需要到github 網站中保存ssh 二、GitHub新建repository 三、本地git互聯GitHub 找…

“輕量應用服務器” vs. “云服務器CVM”:小白入門騰訊云,哪款“云機”更適合你?(場景、配置、價格對比解析)

更多云服務器知識,盡在hostol.com 當你第一次踏入騰訊云這個“數字百貨大樓”,面對琳瑯滿目的“云產品”,是不是有點眼花繚亂,特別是看到“輕量應用服務器”和“云服務器CVM”這兩位都號稱能幫你“安家落戶”的“云主機”時&…

MongoDB學習和應用(高效的非關系型數據庫)

一丶 MongoDB簡介 對于社交類軟件的功能,我們需要對它的功能特點進行分析: 數據量會隨著用戶數增大而增大讀多寫少價值較低非好友看不到其動態信息地理位置的查詢… 針對以上特點進行分析各大存儲工具: mysql:關系型數據庫&am…

Qt學習及使用_第1部分_認識Qt---Qt簡介

前言 學以致用,通過QT框架的學習,一邊實踐,一邊探索編程的方方面面. 參考書:<Qt 6 C開發指南>(以下稱"本書") 標識說明:概念用粗體傾斜.重點內容用(加粗黑體)---重點內容(紅字)---重點內容(加粗紅字), 本書原話內容用深藍色標識,比較重要的內容用加粗傾斜下劃線…

Python語法基礎篇(包含類型轉換、拷貝、可變對象/不可變對象,函數,拆包,異常,模塊,閉包,裝飾器)

Python語法基礎篇&#xff08;二&#xff09; 類型轉換拷貝可變對象與不可變對象可變對象不可變對象 函數拆包異常模塊閉包裝飾器 &#x1f439;&#x1f439;&#x1f439;&#x1f439;&#x1f439;一只正在努力學習計算機技術的小倉鼠&#xff0c;尾部有課程鏈接哦~&#x…

錄制mp4

目錄 單線程保存mp4 多線程保存mp4 rtsp ffmpeg錄制mp4 單線程保存mp4 import cv2 import imageiocv2.namedWindow(photo, 0) # 0窗口大小可以任意拖動&#xff0c;1自適應 cv2.resizeWindow(photo, 1280, 720) url "rtsp://admin:aa123456192.168.1.64/h264/ch1/main…

ISBN書號查詢接口如何用PHP實現調用?

一、什么是ISBN書號查詢接口 ISBN數據查詢接口是一項圖書信息查詢服務。它基于全球通用的ISBN編碼系統&#xff0c;幫助用戶快速獲取圖書的詳細信息&#xff0c;包括書名、作者、出版社、出版時間、價格、封面等關鍵字段。 該接口廣泛應用于電商平臺、圖書館管理系統、二手書…

Redis底層數據結構之深入理解跳表(2)

上一篇文章中我們詳細講述了跳表的增添、查找和修改的操作&#xff0c;這篇文章我們來講解一下跳表在多線程并發時的安全問題。在Redis中&#xff0c;除了網絡IO部分和大文件的后臺復制涉及到多線程外&#xff0c;其余任務執行時全部都是單線程&#xff0c;這也就意味著在Redis…

Go語言依賴管理與版本控制-《Go語言實戰指南》

在現代軟件開發中&#xff0c;項目的第三方依賴和版本控制扮演著至關重要的角色。Go 語言自 Go 1.11 引入 Modules&#xff08;模塊化管理&#xff09;以來&#xff0c;已經實現了內建的依賴管理機制&#xff0c;徹底擺脫了傳統 GOPATH 模式的限制。 本章將深入探討如何使用 Go…

Appium+python自動化(十一)- 元素定位- 下

1、 List定位 List顧名思義就是一個列表&#xff0c;在python里面也有list這一個說法&#xff0c;如果你不是很理解什么是list&#xff0c;這里暫且理解為一個數組或者說一個集合。首先一個list是一個集合&#xff0c;那么他的個數也就成了不確定性&#xff0c;所以這里需要用復…