【测试】appium的基本使用,配置环境、元素定位、简单使用、切换上下文

37 篇文章 0 订阅
16 篇文章 4 订阅
1.安装和配置环境
1.1 安装jdk

jdk官网下载
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

配置环境变量

添加变量
JAVA_HOME=D:\Program Files\Java\jdk\jdk1.8.0_151(换成自己的路径)
在Path添加
%JAVA_HOME%\bin
1.2 安装SDK

Android SDK官网下载
http://dl.google.com/android/android-sdk_r24.4.1-windows.zip
http://tools.android-studio.org/

配置环境变量

新建变量
ANDROID_HOME=E:\sofeware\AndroidSDK\android-sdk(换成自己的路径)
在Path中添加  
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools

配置环境变量比较简单,如果不懂可以另外百度一下

1.3 安装模拟器

额,这个只是为了方便演示,其实直接使用真机也是可以的。如果想要使用模拟器,百度一下,就会有很多,随便下载一个呗,我这里使用的是雷电模拟器,安卓版本是5.1.1

不管是真机还是模拟器,都要打开debug格式。打开设置–关于手机–连续点击五次版本号,直到提示开启开发者模式,之后进入开发者模式,开启USB调试,因为步骤比较简单,而且不同手机操作可能不一样,所以不懂的话可以自己百度一下
在这里插入图片描述
处于开发者模式之后,打开cmd窗口,输入adb devices看是否列出当前设备。adb这个工具是SDK里带有的工具,配置好环境变量之后应该就能用。如果没有,自己去网上下载一个adb

1.4 安装Appinum

可以在Appinum或者GitHub上下载
https://github.com/appium/appium-desktop/releases

下载安装好之后打开该软件,点击下面的那个编辑配置文件,填写好你的ANDROID_HOME和JAVA_HOME的路径,保存重启Appium,之后StartServer进入服务窗口(host和port不用修改)
在这里插入图片描述

2.元素定位

我们想要操控元素,首先得定位它,我们可以使用SDK里提供的 uiautomatorviewer,该工具位于SDK目录里的tool文件
双击uiautomatorviewer.bat启动该软件,左上角的按钮可以获取设备屏幕信息,然后点击你要定位的元素即可看到相关信息,比如说资源id
在这里插入图片描述
相关方法(因为appium继承selenium,所以selenium有的方法appium都有)

driver = find_element_by_id("id")  # 通过id定位元素
driver = find_element_by_xpath(//*)  # 通过xpath定位元素
# find_XXX_by_XXX()  因为appium继承selenium,所以selenium有的方法appium都有
driver.current_url  # 查看当前网页url(webview)
driver.page_source  # 查看网页源码(webview)
element.click()  # 点击元素
element.send_keys()  # 输入文本
driver.quit()  # 结束调试

driver.contexts  # 返回上下文列表
driver.current_context  # 返回当前上下文
driver.current_activity  # 返回当前的activity

driver.tap([(x,y),(x1,y1)],500) # 点击,可以模拟多指触控
driver.scroll(el1, el2) # 从元素1滚动到元素2
driver.drag_and_drop(el1,el2) # 将元素1拖动到元素2

driver.swipe(x1,y1,x2,y2,500) # 从A点滑动到B点
driver.pinch(element)  # 元素缩小操作
driver.zoom(element)  # 元素放大操作

driver.hide_keyboard()  # 隐藏键盘
driver.press_ keycode(4)  # 发送按键码(按键码可网上搜)

driver.install_app(app_path)  # 安装APP
driver.remove_app(“com.xxx.)  # 卸载APP
driver.shake()  # 摇一摇手机
driver.set_location(纬度,经度,高度)  # 设置位置
driver.background_app(5)  # 将应用置于后台,参数单位是秒
driver.get_window_size()  # 获取屏幕的宽高
driver.get_screenshot_as_file('c:/1.png')  # 屏幕截图

3.Appium

我们使用python去写代码,所以应该先安装python的包

pip install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple

如果前面的环境都没有问题,那我们应该是可以使用了

3.1 简单使用

首先打开模拟器里的一个APP,比如说,打开设置
我们先在模拟器里打开设置,然后使用adb获取该APP的包名和活动名

# win系统
adb shell dumpsys window windows | findstr mFocusedApp
# Linux或Mac
adb shell dumpsys activity activities | grep LAUNCHER

在这里插入图片描述
关于adb命令的使用,感兴趣的话可以参考之前的笔记
【Android】安卓调试工具adb shell常用命令总结

获取到包名和活动名之后我们就可以打开该APP了

from appium import webdriver
import time

desired_caps = {
    'platformName': 'Android',  # 表示平台类型
    'platformVersion': '5.1.1',  # 改成实际的安卓版本
    'deviceName': '****',  # 表示的是设备的ID,如果当前电脑只连接了一台手机或模拟器,可以使用4个*号代替
    'appPackage': 'com.android.settings',  # APP的包名
    'appActivity': '.Settings',  # APP的活动名
    'noReset': True  # 启动app时不要清除app里的原有的数据
}

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

time.sleep(1)  
driver.quit() 

不出意外的话,执行上面这段代码,模拟器就会自动打开设置界面,一秒后再自动关闭

3.2 打开浏览器

再举个粒子,就是打开浏览器搜索某个关键词
首先,还是打开浏览器,获取它的包名和活动名
在这里插入图片描述

然后使用uiautomatorviewer进行元素定位,定位到百度的搜索框,可以看到它的resource-id是index-kw,因为id是唯一的,那我们就通过该id去定位吧。再定位一下搜索按钮,获取资源id为index-bn
在这里插入图片描述

思路就是,先通过xpath定位到搜索框,然后输入内容,再定位到搜索按钮,然后点击搜索按钮

from appium import webdriver
import time

# 初始化平台信息
desired_caps = {
    'platformName': 'Android',  # 表示平台类型
    'platformVersion': '5.1.1',  # 表示平台的系统版本
    'deviceName': '****',  # 表示的是设备的ID,如果当前电脑只连接了一台手机或模拟器,可以使用4个*号代替
    'appPackage': 'com.android.browser',  # 表示app的包名
    'appActivity': '.BrowserActivity',  # 表示的是app的界面名,这里为`设置`的界面
    'noReset': True  # 启动app时不要清除app里的原有的数据
}


driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(2)
driver.switch_to.context("WEBVIEW_com.android.browser")
time.sleep(2)
element = driver.find_element_by_xpath('//*[@id="index-kw"]')
element.send_keys("冰冷的希望")
time.sleep(2)
driver.find_element_by_id("index-bn").click()
time.sleep(2)
driver.quit()

注意: 这里元素定位有一个坑,浏览器是原生应用,而浏览器显示的网页内容是一个WebView,我们是不能直接通过resource-id去定位搜索框的(它会报错找不到该元素)。我们应该先切换上下文即进入到WebView再定位,即driver.switch_to.context("XXXXXX"),因为不熟悉,所以我在这个坑研究了两个小时…特地记录一下吧

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值