appium基础操作、元素定位及操作
前言Appium通信原理:Client端发送自动化指令给Appiumserver,Appium Server接收到client发送的指令后,转换为移动端能够识别的指令,然后发送给移动端设备,并对移动端设备进行操作。1.通过appium启动appdriver.start_activity("包名","界面名")2.获取包名和界面名driver.current_package 获取当前脚本运行中的ap
目录
前言
Appium通信原理:Client端发送自动化指令给Appium server,Appium Server接收到client发送的指令后,转换为移动端能够识别的指令,然后发送给移动端设备,并对移动端设备进行操作。
1.通过appium启动app
driver.start_activity("包名","界面名")
2.获取包名和界面名
driver.current_package 获取当前脚本运行中的app包名
driver.current_activity 获取当前脚本运行中的app的界面名
3.关闭app及驱动
关闭app driver.close_app() 不需要跟参数
关闭驱动 driver.quit()
4、安装卸载app以及判断是否安装app
5、将应用置于后台运行
6.元素定位
6.1、定位单个元素
6.1.1 通过ID定位元素
通过元素的resource-id来进行元素定位
driver.fifind_element_by_id(resource_id的值)
6.1.2 通过class_name定位元素
通过元素的class属性值来进行元素定位
app中,class的值始终都只有一个。
driver.fifind_element_by_class_name(class)
6.1.3 通过xpath定位元素
通过xpath的元素属性来进行元素定位
driver.fifind_element_by_xpath("//*[@text='value']")
单个元素定位不到会报错
6.2、定位一组元素
driver.fifind_elements_by_id(resource_id)
driver.fifind_elements_by_class_name(class_name)
driver.fifind_elements_by_xpath(xpath)
driver.fifind_elements(By.ID, value)
返回的值是一个列表,如果没有找到,说明列表是空值,可以通过 下标来使用其中的元素对象,下标是从0开始。
import time
from appium import webdriver
from selenium.webdriver.common.by import By
from utils import get_element
des_cap = {
"platformName": "android",
"platformVersion": "5.1.1",
"deviceName": "****",
"appPackage": "com.baidu.homework",
"appActivity": ".activity.init.InitActivity",
"resetKeyboard": True, # 重置设备的输入键盘
"unicodeKeyboard": True # 采用unicode编码输入
"noReset": True # 用来记住app的session,如果有登陆或做过初始化的操作,为True时,后面不需要再操作
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", des_cap)
jump_element = By.XPATH,"//*[@text='跳过']"
get_element(driver,jump_element).click()
time.sleep(2)
stu_element = By.XPATH,"//*[@text='学生']"
get_element(driver,stu_element).click()
time.sleep(2)
one_grade_element = By.ID,"com.baidu.homework:id/identity_student"
get_element(driver,one_grade_element).click()
time.sleep(2)
success_element = By.CLASS_NAME,"android.widget.TextView"
get_element(driver,success_element).click()
time.sleep(3)
driver.quit()
from selenium.webdriver.support.wait import WebDriverWait
def get_element(driver, elements):
wait = WebDriverWait(driver,30,1)
element = wait.until(lambda x:x.find_element(elements[0],elements[1]))
return element
7.元素操作
# 为了保证代码的健壮性,确定输入的内容一定不会出错,所以在输入前做了一次清除。
def input_text(element, text):
"""
:param element: 表示的是元素对象
:param text: 表示的是要输入的内容
:return:
"""
# 清除元素中的文本内容
element.clear()
# 输入文本内容
element.send_keys(text)
更多推荐
所有评论(0)