【Python】Appium-Python-Client库详解及实战用法指南
目录
1、应用场景
2、Appium-Python-Client-三方库
1、应用场景
Appium-Python-Client库主要用于自动化移动应用的测试,它是Appium自动化测试框架的Python客户端。以下是一些常见的应用场景:
- 原生应用测试: 这是Appium最主要的用途,可用于安卓和iOS平台上原生应用的测试。
- 移动网页应用测试: 可以测试在各种手机浏览器(如Chrome、Safari)或者Webview context中运行的网页。
- 混合应用测试: 混合应用指的是部分使用WebView(Web页面)编写,部分使用原生代码编写的应用,Appium可以在这两部分之间进行无缝切换和测试。
- 多设备测试: 可以连接多个设备或模拟器,并进行并行测试。
- 自动登录测试: 比如自动化测试微信、QQ、支付宝等应用的登录过程。
- 兼容性测试: 在多种设备、多个版本的系统上对App进行测试。
- 持续集成: 可以将Appium测试脚本与持续集成系统(如Jenkins)进行集成,实现自动化的测试流程。
2、Appium-Python-Client-三方库
Appium-Python-Client库主要被用来创建一个Appium的webdriver实例,并使用这个实例来操作移动应用。以下是库中一些常用的方法:
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': 'emulator-5554',
'app': '/path/to/your/apk/file',
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
element = driver.find_element_by_id('com.example:id/someId')
element = driver.find_element_by_name('someName')
element = driver.find_element_by_class_name('android.widget.TextView')
element = driver.find_element_by_xpath('//android.widget.TextView[@text="Settings"]')
element.click()
element.send_keys('some text')
driver.swipe(start_x, start_y, end_x, end_y)
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((MobileBy.ID, 'com.example:id/someId'))
)
driver.start_recording_screen()
driver.stop_recording_screen()
driver.quit()
这只是一些基本的使用方法,实际上Appium-Python-Client库提供了很多其他的方法来满足更复杂的测试需求。
除了上述方法,Appium-Python-Client库还有一些其他常见的使用方法:
print(driver.contexts) # 获取所有上下文
driver.switch_to.context('WEBVIEW') # 切换到WebView上下文
driver.switch_to.context('NATIVE_APP') # 切换回原生上下文
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
action1 = TouchAction(driver).press(x=100, y=200)
action2 = TouchAction(driver).press(x=200, y=200)
multi = MultiAction(driver)
multi.add(action1, action2)
multi.perform()
这些都是一些常见的用法,但并不局限于此,具体的用法会根据测试需求进行选择和组合。
在Appium-Python-Client的库中,提供了多种查找元素的方法:
通过元素的id查找:
element = driver.find_element_by_id("element_id")
通过元素的class name查找:
element = driver.find_element_by_class_name("element_class_name")
通过元素的XPath查找:
element = driver.find_element_by_xpath("//tag[@attribute='value']")
通过元素的name查找(元素的文本,即属性name="value"的值):
element = driver.find_element_by_name("element_name")
通过元素的tag name查找(标签名,如<div>,<p>,<span>等):
element = driver.find_element_by_tag_name('tag_name')
通过链接的文字查找:
element = driver.find_element_by_link_text('link_text')
通过partial link的文字查找:
element = driver.find_element_by_partial_link_text('partial_link_text')
使用css选择器:
element = driver.find_element_by_css_selector('css_selector')
此外,以上的所有方法都有对应的find_elements...形式的方法,返回的是一个元素列表,而不是单个元素。例如:
elements = driver.find_elements_by_class_name("element_class_name")
这些方法将返回一个元素列表,其中包含所有匹配的元素。注意如果没有元素匹配,find_element…方法将抛出一个NoSuchElementException异常,而find_elements…方法将返回一个空列表。
作者:\"啦啦啦\"