Appium自动化(9):Appium常用操作之元素操作
前置条件:
先配置Desired Capabilities等配置信息
代码示例:
import time from appium import webdriver # 导入appium 驱动包 from appium.webdriver.webdriver import By # 导入appium 定位的方法包 des = { 'platformName':'Android', 'platformVersion':'6.0.1', # 填写android虚拟机/真机的系统版本号 'deviceName':'MuMu', # 填写安卓虚拟机/真机的设备名称 'appPackage':'com.android.settings', # 填写被测app包名 'appActivity':'.Settings', # 填写被测app的入口 'udid':'127.0.0.1:7555', # 填写通过命令行 adb devices 查看到的udid 'noReset':True, # 是否重置APP 'unicodeKeyboard':True, # 是否支持中文输入 'resetKeyboard':True, # 是否支持重置键盘 'newCommandTimeout':30 # 30秒没发送新命令就断开连接 } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)
基本元素操作
1、click(self):点击元素
# 点击元素 time.sleep(3) driver.find_element(By.XPATH,'//android.widget.TextView[@content-desc="搜索设置"]').click()
2、send_keys(self,*value):在元素中输入文本内容
# 在元素中输入文本信息 time.sleep(3) element = driver.find_element(By.XPATH,'//android.widget.EditText[@resource-id="android:id/search_src_text"]') element.send_keys('你好')
3、clear(self):在元素中清除文本内容
# 在元素中清除文本内容 time.sleep(3) element = driver.find_element(By.XPATH,'//android.widget.EditText[@resource-id="android:id/search_src_text"]').send_keys('happy') element.clear()
4、submit(self):提交表单操作,在H5和webview中可使用
待更新!!!
获取元素属性操作
1、text:获取元素属性中的text值
2、tag_name:获取元素的标签名(原生应用无标签名,所以为None)
3、get_attribute(self,*name):根据属性名获取元素属性,属性名填写错误会报错
4、size:获取元素的宽和高,返回字典{'height':高,'width':宽}
5、location:获取元素左上角的坐标,返回字典{'x':坐标,'y':坐标}
6、rect:元素的大小和位置组合字典,返回字典{'height':高,'width':宽,'x':坐标,'y':坐标}
备注:还有部分方法如screenshot(self,*filename)等用在H5和webview端,由于appium中api没有区分原生和H5,所以当在代码中报错Methodhasnotyetbeenimplemented时,可以确认该方法在另外一端使用
time.sleep(3) element = driver.find_element(By.XPATH,'//android.widget.EditText[@resource-id="android:id/search_src_text"]').send_keys('happy') # 获取元素属性中的text值 print(element.text) # 获取元素的标签名 print(element.tag_name) # 根据属性名获取元素属性 print(element.get_attribute('bounds')) # 获取元素的宽和高,返回字典 print(element.size) # 获取元素左上角的坐标,返回字典 print(element.location) # 元素的大小和位置组合字典,返回字典 print(element.rect)
执行结果:
1 happy 2 None 3 [150,79][768,163] 4 {'height': 84, 'width': 618} 5 {'x': 150, 'y': 79} 6 {'height': 84, 'width': 618, 'x': 150, 'y': 79}
元素判断的操作
1、is_displayed(self):此元素是否可见。隐藏元素和被控件挡住无法操作的元素(仅限H5和webview支持)返回布尔值;
# 该元素是否可见 time.sleep(5) is_d = driver.find_element(By.XPATH,'//android.widget.EditText[@resource-id="com.wondertek.paper:id/input_phone"]').is_displayed() print(is_d)
2、is_enabled(self):此元素是否可用。元素灰色和无法操作的元素(仅限H5和webview支持)返回布尔值;
# 该元素是否可用 time.sleep(5) is_e = driver.find_element(By.XPATH,'//android.widget.Button[@text="登录"]').is_enabled() print(is_e)
3、is_selected(self):此元素是否被选中。适用于单选框、复选框等类型的元素(仅限H5和webview支持)返回布尔值;
# 此元素是否被选中 time.sleep(5) is_s = driver.find_element_by_xpath('//android.widget.CheckBox[@resource-id="com.wondertek.paper:id/checkbox_agreement"]').is_selected() print(is_s)
4、对于原生应用来讲,元素断言可以通过获取displayed、enabled、selected属性值,然后通过条件语句if来进行判断;