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()

 

posted @ 2022-09-14 17:42  沐小木  Views(1455)  Comments(1Edit  收藏  举报