python+appium实现app自动化测试
一)appium环境搭建
appium环境搭建步骤有些繁琐,已有一些网友出了很完善的教程了,在此分享给大家:
参考教程一:https://www.cnblogs.com/yinjia/p/10344469.html
参考教程二:https://zhuanlan.zhihu.com/p/49193525
二)python+appium实现app自动化测试
示例代码:
from appium import webdriver
#配置appium数据
desired_caps={
"platformName": "Android",
"platformVersion": "10",
"deviceName": "88Y4C19929008851",
"appPackage": "com.huawei.calculator",
"appActivity": ".Calculator"
}
#启动app
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.implicitly_wait(5) #使用隐式等待或者显示等待,尽量减少time.sleep强制等待的使用提高脚本执行速度
el1 = driver.find_element_by_id("com.huawei.calculator:id/digit_1")
el1.click()
el2 = driver.find_element_by_accessibility_id("加")
el2.click()
el3 = driver.find_element_by_id("com.huawei.calculator:id/digit_8")
el3.click()
el4 = driver.find_element_by_accessibility_id("等于")
el4.click()
el5 = driver.find_element_by_accessibility_id("清除")
el5.click()
driver.quit()
遇到问题:appium的driver.find_element_by_id出现报错
原因:我使用的appium version是1.21.0,python 3.7,用appium进行安卓测试时driver.find_elements_by_*类型的方法均无法使用,提示driver没有这个方法。查了一下原因,大概是Selenium 4.0不再支持find_elements_by_*方法,基于这个库之上的Appium-Python-Client自然也不再支持此类方法。
解决方法一:appium只支持find_element(by,value)和find_elements(by,value)这两种定位方法,可以通过By属性来解决:
from appium import webdriver from appium.webdriver.common.appiumby import By #配置appium数据 desired_caps={ "platformName": "Android", "platformVersion": "10", "deviceName": "88Y4C19929008851", "appPackage": "com.huawei.calculator", "appActivity": ".Calculator" } #启动app driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) driver.implicitly_wait(5) #使用隐式等待或者显示等待,尽量减少time.sleep强制等待的使用提高脚本执行速度 el1 = driver.find_element(By.ID,"com.huawei.calculator:id/digit_1").click() el2 = driver.find_element(By.ID,"com.huawei.calculator:id/op_add").click() el3 = driver.find_element(By.ID,"com.huawei.calculator:id/digit_8").click() el4 = driver.find_element(By.ID,"com.huawei.calculator:id/eq").click() el5 = driver.find_element(By.ID,"com.huawei.calculator:id/op_clr").click() driver.quit()
解决方法二:
from appium import webdriver #配置appium数据 desired_caps={ "platformName": "Android", "platformVersion": "10", "deviceName": "88Y4C19929008851", "appPackage": "com.huawei.calculator", "appActivity": ".Calculator" } #启动app driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) driver.implicitly_wait(5) #使用隐式等待或者显示等待,尽量减少time.sleep强制等待的使用提高脚本执行速度 el1 = driver.find_element('id',"com.huawei.calculator:id/digit_1").click() el2 = driver.find_element('accessibility id',"加").click() el3 = driver.find_element('id',"com.huawei.calculator:id/digit_8").click() el4 = driver.find_element('accessibility id',"等于").click() el5 = driver.find_element('accessibility id',"清除").click() driver.quit()