IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python+appium测试酷狗音乐车机版 -> 正文阅读

[Python知识库]python+appium测试酷狗音乐车机版

主要是搭建python+appium+pyCharm环境进行自动化测试,该脚本主要是对酷狗音乐进行自动化测试:

其中坐标主要是取的bounds[x1,y1][x2,y2],参考:(251条消息) Appium自动化测试(六)之坐标介绍_洛书测试-CSDN博客_appium bounds

# This sample code uses the Appium python client v2
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
import time
import os


from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# For W3C actions
from selenium.common.exceptions import StaleElementReferenceException, NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput

caps = {}
caps["platformName"] = "Android"
caps["appium:platformVersion"] = "9.0.0"
caps["appium:deviceName"] = "spm8666p1_64_car"
caps["appium:appPackage"] = "com.chinatsp.music"
caps["appium:appActivity"] = ".MusicMainActivity"
caps["appium:ensureWebviewsHavePages"] = True
caps["appium:nativeWebScreenshot"] = True
caps["appium:newCommandTimeout"] = 3600
caps["appium:connectHardwareKeyboard"] = True

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
def quick_press(size, location):
    ele1_size = size
    # 元素的宽
    width = ele1_size['width']
    # 元素的高
    height = ele1_size['height']
    ele1_coordinate = location
    # 元素左上角横坐标
    x = ele1_coordinate['x']
    # 元素左上角纵坐标
    y = ele1_coordinate['y']
    el1_center_x = x + int(width / 2)
    el1_center_y = y + int(height / 2)
    driver.tap([(el1_center_x, el1_center_y)], 500)

def press_top500():
    el1 = driver.find_element(by=AppiumBy.XPATH,  value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/androidx.recyclerview.widget.RecyclerView/androidx.appcompat.widget.LinearLayoutCompat[1]")
    ele1_size = el1.size
    ele1_coordinate = el1.location
    quick_press(ele1_size, ele1_coordinate)
    #el1.click()
    #driver.implicitly_wait(2)
    time.sleep(1)
    el2 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.TextView[2]")
    el2.click()
    time.sleep(1)
    #el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]")
    #ele3_size = el3.size
    #ele3_coordinate = el3.location
    #quick_press(ele3_size, ele3_coordinate)
    driver.tap([(700, 250)], 500)
    time.sleep(1)
    #driver.implicitly_wait(1)
    #el4 = driver.find_element(by=AppiumBy.ID, value="com.chinatsp.music:id/ivNext")
    continue_press()
    driver.keyevent(4)
    time.sleep(1)
    driver.keyevent(4)
def continue_press():
    i = 0
    while i < 100:
        try:
            #next_btn = driver.find_element(by=AppiumBy.ID, value="com.chinatsp.music:id/ivNext")
            #adb = "adb shell input tap 700 635"
            #os.system(adb)
            driver.tap([(700, 635)], 500)
        except StaleElementReferenceException:
            time.sleep(2)
            break
        except NoSuchElementException:
            time.sleep(2)
            break
        i = i+1
        print("count:",i)
press_top500()
driver.quit()

重复执行在获取界面元素的时候超时比较验证,全部改为坐标点击,性能完美提升;

# This sample code uses the Appium python client v2
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
import time
import os


from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# For W3C actions
from selenium.common.exceptions import StaleElementReferenceException, NoSuchElementException, \
    InvalidElementStateException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput

caps = {}
caps["platformName"] = "Android"
caps["appium:platformVersion"] = "9.0.0"
caps["appium:deviceName"] = "spm8666p1_64_car"
caps["appium:appPackage"] = "com.chinatsp.music"
caps["appium:appActivity"] = ".MusicMainActivity"
caps["appium:ensureWebviewsHavePages"] = True
caps["appium:nativeWebScreenshot"] = True
caps["appium:newCommandTimeout"] = 3600
caps["appium:connectHardwareKeyboard"] = True

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
def quick_press(size, location):
    ele1_size = size
    # 元素的宽
    width = ele1_size['width']
    # 元素的高
    height = ele1_size['height']
    ele1_coordinate = location
    # 元素左上角横坐标
    x = ele1_coordinate['x']
    # 元素左上角纵坐标
    y = ele1_coordinate['y']
    el1_center_x = x + int(width / 2)
    el1_center_y = y + int(height / 2)
    driver.tap([(el1_center_x, el1_center_y)], 500)

def press_top500():
    #el1 = driver.find_element(by=AppiumBy.XPATH,  value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/androidx.recyclerview.widget.RecyclerView/androidx.appcompat.widget.LinearLayoutCompat[1]")
    #ele1_size = el1.size
    #ele1_coordinate = el1.location
    #quick_press(ele1_size, ele1_coordinate)
    driver.tap([(1200, 250)], 500)
    #el1.click()
    #driver.implicitly_wait(2)
    time.sleep(1)
    #el2 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.TextView[2]")
    #el2.click()
    driver.tap([(100, 150)], 500)
    time.sleep(1)
    #el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]")
    #ele3_size = el3.size
    #ele3_coordinate = el3.location
    #quick_press(ele3_size, ele3_coordinate)
    driver.tap([(700, 250)], 500)
    time.sleep(1)
    #driver.implicitly_wait(1)
    #el4 = driver.find_element(by=AppiumBy.ID, value="com.chinatsp.music:id/ivNext")
    continue_press()
    driver.keyevent(4)
    time.sleep(3)
    driver.keyevent(4)
    time.sleep(3)
def continue_press():
    i = 0
    while i < 100:
        try:
            #next_btn = driver.find_element(by=AppiumBy.ID, value="com.chinatsp.music:id/ivNext")
            #adb = "adb shell input tap 700 635"
            #os.system(adb)
            driver.tap([(700, 635)], 500)
        except StaleElementReferenceException:
            time.sleep(2)
            break
        except NoSuchElementException:
            time.sleep(2)
            break
        i = i+1
        print("count:",i)
n = 0
while n < 1000:
    try:
        press_top500()
    except InvalidElementStateException:
        time.sleep(2)
        break
    n = n + 1
    print("continue count:", n)
driver.quit()

参考:

安装;https://blog.csdn.net/weixin_39906130/article/details/111439362
https://www.cnblogs.com/jyd0124/p/appium.html
https://shimo.im/docs/D9rvq8kc8GgH9QgH/read
配置:
{
? "platformName": "Android",
? "appium:platformVersion": "9.0.0",
? "appium:deviceName": "spm8666p1_64_car",
? "appium:appPackage": "com.chinatsp.music",
? "appium:appActivity": ".MusicMainActivity"
}

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:30:49  更:2022-03-04 15:31:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:43:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码