使用Appium-Inspector写出测试脚本
第一次写都是从模仿开始,网上找了一个模板,主要是要将元素定位的部分进行修改才能够本地测试用。
# 导入webdriver
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import visibility_of_all_elements_located, \
visibility_of_element_located
from selenium.webdriver.support.wait import WebDriverWait
# 初始化参数
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '9', # 手机安卓版本
'deviceName': 'PAR-AL00', # 设备名,安卓手机可以随意填写
'appPackage': 'com.test.AndroidBeta', # 启动APP Package名称
'appActivity': 'com.test.Android.AndroidActivity', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
'newCommandTimeout': 6000,
'automationName': 'UiAutomator2'
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
agree_continue_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.LinearLayout/android.view.View"
WebDriverWait(driver, 10, 1).until(visibility_of_element_located((MobileBy.XPATH, agree_continue_xpath)))
driver.find_element(By.XPATH, agree_continue_xpath).click()
chicang_xpath = "//android.view.View[contains(@content-desc,'首页')]"
WebDriverWait(driver, 10, 1).until(visibility_of_element_located((MobileBy.XPATH, chicang_xpath)))
driver.find_element(By.XPATH, chicang_xpath).click()
# 退出程序,记得之前没敲这段报了一个错误 Error: socket hang up 啥啥啥的忘记了,有兴趣可以try one try
driver.quit()
由于被测试软件开发过程不规范,基本上无法使用id来定位元素,这里都是使用xpath定位。
注:测试脚本中实现等待的几种方法
1.设置完等待后不管有没有找到元素,都会执行等待,等待结束后才会执行下一步
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
time.sleep(3) # 设置强制等待
driver.quit()
2.
设置全局等待,对每个查询的元素都生效,在等待时间内找到了该元素则执行下一步,未找到报错。
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10) # 设置隐性等待
driver.quit()
3.显性等待
# 10为等待时间,1为在10s内每过1s去判断一次
WebDriverWait(driver, 10, 1).until(visibility_of_element_located((MobileBy.XPATH, chicang_xpath)))
找不到元素会报错
Appium-Inspector还有一个录制功能,对于初次写测试脚本的人来说非常友好,只是实际测试发现部分操作生成的脚本不能直接使用,还需要进行适配修改。
操作实例:
原生app模式,左侧xpath可用于定位元素
刷新界面
开始录制
单击操作
滑动操作,先在屏幕上点击滑动启动点,再选择一个滑动终止点
不知道什么原因,自动生成的脚本这里的坐标都无法显示出来
经过改动后可使用
start_x = 657
start_y = 685
end_x = 457
end_y = 685
actions = ActionChains(driver)
actions.w3c_actions = ActionBuilder(driver, mouse=PointerInput(interaction.POINTER_TOUCH, "touch"))
actions.w3c_actions.pointer_action.move_to_location(start_x, start_y)
actions.w3c_actions.pointer_action.pointer_down()
actions.w3c_actions.pointer_action.move_to_location(end_x, end_y)
actions.w3c_actions.pointer_action.release()
actions.perform()
点击操作
取出脚本