Appium自动化测试框架2

UIAutomatorViewer

元素定位操作API

定位一个元素

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'

# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 点击放大镜按钮 点击
driver.find_element(AppiumBy.ID,"com.android.settings:id/search").click()

# 输入框输入hello
driver.find_element(AppiumBy.CLASS_NAME,"android.widget.EditText").send_keys("hello")

# 点击返回
driver.find_element(AppiumBy.XPATH,"//*[@content-desc='收起']").click()
time.sleep(3)

driver.quit()

定位一组元素

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time


# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'

# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

titles = driver.find_elements(AppiumBy.ID,"android:id/title")
print(titles,len(titles))
for title in titles:
    print(title.text)

# 下标从0开始开始
titles[7].click()

titles = driver.find_elements(AppiumBy.CLASS_NAME,"android.widget.TextView")
for i in titles:
    print(i.text)

print(len(titles))
titles[5].click()

titles = driver.find_elements(AppiumBy.XPATH,"//*[contains(@text,'设')]")
for i in titles:
    print(i.text)

print(len(titles))
time.sleep(5)


# driver.quit()

button = driver.find_element_by_id("xxxx")
button.click()
# 报错
eles = driver.find_elements_by_id("xxxx")
print(eles)
for i in eles:
	print(i)
# 不会报错 就是返回一个空列表

元素等待

显示等待 单个 一次性 隐式等待 全局元素

显示等待

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from appium.webdriver.common.appiumby import AppiumBy

# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'

# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 一共找5秒 每一秒调用一次方法
element = WebDriverWait(driver, timeout=5, poll_frequency=1).until(
    lambda x: x.find_element(AppiumBy.XPATH, "//*[@content-desc='收起']"))

element.click()

driver.quit()

在显示等待的时间里 我们可以自己点击操作 跳转页面 在5秒内点到有包含收起元素的页面 其不会报错

隐式等待

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'

# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

driver.implicitly_wait(5)
driver.find_element(AppiumBy.XPATH,"//*[@content-desc='收起']").click()
time.sleep(2)
driver.quit()

元素操作

点击:
driver.find_element(AppiumBy.ID,"com.android.settings:id/search").click()
driver.find_element(AppiumBy.ID,"com.android.settings:id/search").click()

driver.find_element(AppiumBy.CLASS_NAME,"android.widget.EditText").send_keys("123123")
time.sleep(3)
driver.find_element(AppiumBy.CLASS_NAME,"android.widget.EditText").clear()
time.sleep(2)
driver.find_element(AppiumBy.CLASS_NAME,"android.widget.EditText").send_keys("你好")
time.sleep(2)
driver.quit()


titles = driver.find_elements(AppiumBy.ID,"android:id/title")
print(titles,len(titles))
for title in titles:
    print(title.text)

time.sleep(2)

driver.quit()

enabled 是否可用 变灰 不可用False 可用 亮的 可用True

获取元素的属性值:

传入属性名 返回属性值

根据左边的名 获取右边的值

如使用其它版本注意点:

# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

elements = driver.find_elements(AppiumBy.ID,"android:id/title")

for i in elements:
    print(i.get_attribute("enabled"))
    print(i.get_attribute("text"))
    print(i.get_attribute("content-desc"))
    print(i.get_attribute("name")) # 与text一样
    print(i.get_attribute("resource-id"))
    print(i.get_attribute("class"))
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值