栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Appium使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Appium使用

1.安装

pip install Appium-Python-Client

2.基本使用
import time

from appium import webdriver

desired_caps = dict()
desired_caps['platformName'] = 'Android'  # 大小写无所谓,但是不能乱写
desired_caps['platformVersion'] = '5.1.1'  # 不能写错
desired_caps['deviceName'] = 'Android Emulator'  # android 可随便写,但不能不写;ios不能随便写
desired_caps['unicodekeyboard'] = True  # 允许输入中文
desired_caps['resetkeyboard'] = True  # 允许输入中文
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

time.sleep(1)
# 打开一个页面
driver.start_activity('com.android.contacts', '.activities.PeopleActivity')
# driver.current_package
# driver.current_activity

time.sleep(1)
# driver.close_app() #关掉当前app
# driver.install_app("1.apk") #安装apk
# driver.remove_app("com.android.xxx") #卸载apk
# driver.is_app_installed("com.android.xxx") #是否安装某app
# driver.background_app(3) #将应用置于后台3秒后自动切回前台
driver.quit()

3.元素定位 1. uiautomatorviewer

在sdk/tools/bin/uiautomatorviewer.bat
先用该工具找到布局参数

1.保证想要查看的元素在当前屏幕上;
2.打开uiautomatorviewer,点击左上角第二个按钮截屏
3.如果点击时报错,adb kill-server,adb start-server

2.取元素方式

** 取单个**

# driver.find_element_by_id("com.android.settings:id/search")
# driver.find_element_by_class_name("android.widget.TextView")
driver.find_element_by_xpath("//*[contains(@text,'更多')]").click()

取多个

driver.find_elements_by_id("com.android.settings:id/search")
#其它同理
3.元素等待 1.隐式等待

driver.implicitly_wait(10)
统一设置等待时长,之后程序里所有的 find_Element_xxx 方法都会以这个设置为准,找不到元素时等待 10 秒,10 秒内找到立即执行下面操作,超过 10 秒还找不到,就报 NosuchElementException 异常。

2.显式等待

显式等待只针对某一个找元素操作单独设置等待时间和频率,其它没写 WebDriverWait 的找元素操作不会等待,找不到直接报错。
button = WebDriverWait(driver, 5, 1).until(lambda x: x.find_element_by_xpath("//*[contains(@text,'更多')]"))
等待 5 秒,每1秒检查一次这个元素在不在,找到后立即往下执行,超过 5 秒还找不到,报 TimeoutException。

4.元素操作 1.基本操作
element.click() # 点击
el.send_keys(value) # 输入文字
el.clear() # 清空输入框内容
el.text # 获取元素文本内容
# el.location #位置
# el.size # 宽高

有时不能输入中文,在前置参数中加入下面两行就行了:

desired_caps['unicodekeyboard'] = True  # 允许输入中文
desired_caps['resetkeyboard'] = True  # 允许输入中文
2.取属性值 3.滑动 1.滑动的事件方法

1.swipe
driver.swipe()
特点:参数是坐标点,根据持续时间决定惯性大小
2.scroll
driver.scroll()
参数是元素,从一个元素滑动到另一个元素,有惯性
3.drag_and_drop
driver.drag_and_drop()
参数是元素,从一个元素滑动到另一个元素,没惯性,滑的比较准确

2.事件选择

无非考虑两点:考虑是传入坐标还是元素;考虑要不要有惯性;
传元素:
有惯性用 scroll,无惯性用 drag_and_drop
传坐标:只能用swipe,想要有惯性就设置短的duration,否则设置长的duration。

4.复杂手势 TouchAction
# 找到要操作的元素
search_el = driver.find_element_by_id("com.android.settings:id/search")
# 创建action对象
action = TouchAction(driver)
# 点击元素
action.tap(search_el)
# 开始执行
action.perform()
按下:press
抬起:release
# 按下坐标位置等2s后抬起
action.press(x=100, y=100).wait(2000).release().perform()
# 和上面一样的效果
action.long_press(x=100, y=100,duration=2000).perform()

怎么取坐标点?

4.其它操作 1.分辨率,截图
# 取设备分辨率
print(driver.get_window_size())
# 截图
driver.get_screenshot_as_file('screen.png')
2.网络状态:

driver.network_connection

# 设置当前网络为飞行模式
driver.set_network_connection(1)
3.发送键值
# 按返回键
driver.press_keycode(4)
4.通知栏
# 打开通知栏,2秒后关闭通知栏
driver.open_notifications()
time.sleep(2)
driver.press_keycode(4)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号