appium入坑必备--万字详解基本操作,为不用手刷抖音打木桩_appium大麦

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)

后台运行

rt.background_app(100)


### 安装与删除app


        这一步其实可以不用代码来运行,属实显的有点多余的感觉,不过也仅仅只是显得,还是有一定作用的。有时候会出现不一样的bug,图标在,但是跑不起来,等查包的时候结果发现其实没有这个包。



from time import sleep
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)

关闭app

rt.close_app()

检查桌面其他app是否有安装

if rt.is_app_installed(‘net.csdn.csdnplus’):
# 如果有则卸载
rt.remove_app(‘net.csdn.csdnplus’)
else:
# 没有则安装
rt.install_app(‘安装的路劲加包名’)


### 下拉通知栏


        这步操作嘛,了解就好!



下拉通知栏

rt.open_notifications()


### 截图


        截图还是有必要的,毕竟有时候出bug了来不及截图,可以写一个逻辑判断进行截图,还是比较方便的。



from time import sleep
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)

截图+保存路径

rt.get_screenshot_as_file(‘d:/www.png’)


### 分辨率


        别小看分辨率,本章后续会讲到分辨率的使用方法。非常实用的一个方法。



from time import sleep
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)

获取分辨率

print(‘分辨率:’,rt.get_window_size())


### 拖动元素


        这个还是比较有意思的,其用法这里简单的举例,大家各自发挥脑洞尝试。这里举例就是将两个图标呼唤一下位置。


![](https://img-blog.csdnimg.cn/20210819102347173.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjA0MDg2OA==,size_16,color_FFFFFF,t_70)



from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)

关闭app

rt.close_app()

拖动元素

ele1 = rt.find_element_by_xpath(‘//[@text=“CSDN”]‘)
ele2 = rt.find_element_by_xpath(’//
[@text=“百度地图”]’)
rt.drag_and_drop(ele1,ele2)


## 模拟动作



> 
>         导入TouchAction的包:TouchAction辅助类:连续性操作
> 
> 
>         from appium.webdriver.common.touch\_action import TouchAction 
> 
> 
>                  TouchAction支持的方法
> 
> 
>                         1. 短按 press(self, el=None, x=None, y=None)
> 
> 
>                         2. 长按 long\_press(self, el=None, x=None, y=None, duration=1000(ms))
> 
> 
>                         3. 释放 release(self)
> 
> 
>                         4. 移动到 move\_to(self,el=None,x=None,y=None)
> 
> 
>                         5. 点击 tap(self,el=None,x=None,y=None,count=1)
> 
> 
>                         6. 等待 wait(self,ms=0)
> 
> 
>                         7. 执行 perform(self)
> 
> 
> 


### 轻触、点击


        如果叫点击显的不是很合适,所以我们直接叫轻触,但是,在你无法定位到元素的时候也可以使用该方法。轻触最多五个点,以列表嵌套元组的方式。单位是ms,这里是0.5s的间隔,会在屏幕中出现两个小点。坐标是随意设置的。这里即使不退出app也是可以的!



from time import sleep
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)
rt.close_app()
rt.tap([(100,20),(200,100)],500)


### 滑动坐标


        这个就适合滑屏的app了,比如,抖音,快手,网易,但凡有滑屏的都可以使用这个方法。



rt.swipe(100,100,100,400,duration=1000)


        这是一个坐标,从(100,100)到(100,400),时间间隔1s,这里的单位是ms所以是1000


        **以上两种不需要用到导包,接下来的就需要了**


### 滑动解锁屏幕


        滑动屏幕需要连续操作,所以使用该方法:move\_to可以连续使用,release()释放,duration默认1000--1S


        再此之前我们可以使得屏幕息屏,注意自己设置锁屏,或者自己用手机来试验也行,使用adb命令使得设备锁屏:adb shell input keyevent 6



from appium.webdriver.common.touch_action import TouchAction
import os
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)
rt.close_app()

命令锁屏

i = ‘adb shell input keyevent 6’
os.system(i)

初始化方法

action = TouchAction(rt)

滑动解锁

action.long_press(x=114,y=1200,duration=1000).move_to(x=777,y=111).release().perform()


        这里我只设置了两个点,自己可以设置多个点进行测试。


### 缩小地图实例


        先看一章图,我们需要根据这张图的点进行计算才能实现功能


![](https://img-blog.csdnimg.cn/20210819113829824.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjA0MDg2OA==,size_16,color_FFFFFF,t_70)


         乍一看,是不是很懵逼,为什么要看这张图,看完代码你就朦懂了 。此处用到多点触摸,需导入包:from appium.webdriver.common.touch\_action import TouchAction



> 
>         MultiTouchAction支持方法:
> 
> 
>                 • 添加触摸操作到多点触摸 add(self, \*touch\_actions)
> 
> 
>                 • 执行 perform(self
> 
> 
> 



from selenium import webdriver
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction

打开app

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.baidu.BaiduMap”,
“appActivity”: “com.baidu.baidumaps.MapsActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)

获取屏幕大小

size = rt.get_window_size()
x = size[‘width’]
y = size[‘height’]

从a划到b,从近滑倒远点

action = TouchAction(rt)
action.press(x=0.2x,y=0.2y).wait(1000).move_to(x=0.4x,y=0.4y).release()

从d滑倒c,从远点滑倒近点

action2 = TouchAction(rt)
action2.press(x=0.8x,y=0.8y).wait(1000).move_to(x=0.6x,y=0.6y).release()

实例化方法用于同时操作action跟action2

m_action = MultiAction(rt)
m_action.add(action,action2)

不支持直接在add后面直接使用

m_action.perform()


         我们需要通过图中的坐标进行计算,才能让地图实现功能,。


## 键盘操作


        在进行移动应用自动测试的过程中,经常会碰到一些特殊情况,如打开视频后想要关闭视频,在这 种情况自动化测试脚本中是无法通过在界面中进行元素定位来实现的,此时需要通过手机自带的返 回键来完成操作,而且对于调节音量,锁屏,关机等操作都少不了键盘来完成。




|  |  |  |
| --- | --- | --- |
| KEYCODE\_ENTER | 回车键 | 66 |
| KEYCODE\_ESCAPE    | ESC键 | 111 |
| KEYCODE\_FORWARD\_DEL    | 删除键 | 112 |
| KEYCODE\_CALL     | 拨号键     | 5 |
| KEYCODE\_ENDCALL   |  挂机键   |  6 |
| KEYCODE\_HOME | 按键 | Home |
| KEYCODE\_BACK     | 返回键     | 4 |
| KEYCODE\_SEARCH     | 搜索键     | 84 |
| KEYCODE\_CAMERA     | 拍照键     | 27 |
| KEYCODE\_ZOOM\_IN | 放大键    | 168 |
| KEYCODE\_ZOOM\_OUT    | 缩小键    | 169 |
| KEYCODE\_INSERT    | 插入键    | 124 |
| KEYCODE\_POWER     | 电源键   |  26 |
| KEYCODE\_VOLUME\_MUTE     | 扬声器静音键     | 164 |
| KEYCODE\_VOLUME\_UP     | 音量增加键     | 24 |
| KEYCODE\_VOLUME\_DOWN     | 音量减小键     | 25 |


        这里只举例了一部分,按键有很多很多,自己可以根据需要去问问度娘。遇事不觉就度娘。



from time import sleep
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,
“appPackage”: “com.netease.cloudmusic”,
“appActivity”: “.activity.MainActivity”,
“platformVersion”: “7.1.2”,
“noReset”: “True”
}
rt = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_capas)
ele = rt.find_element_by_xpath(‘//*[@text=“每日推荐”]’)
rt.keyevent(6)
sleep(2)
rt.press_keys(4)


## Activity事件


        android四大组件之一,简单来说就是一个界面,和用户进行交互



> 
> 1. driver.current\_activity 获取当前的activity
> 
> 
> 2. driver.wait\_activity(self, activity, timeout, interval=1) 等待指定的activity出现直到超时
> 
> 
>         • Activity:android特有的
> 
> 
>         • timeout - 最大超时时间,单位是s
> 
> 
>         • interval - 循环查询时间,间隔1秒 即每隔几秒获取一次当前的
> 
> 
> 3. driver.start\_activity(app\_package, app\_activity) 实现页面跳转(包括App内部页面及App相互跳转)
> 
> 
>         • app\_package:包名
> 
> 
>         • app\_activity:跳转的页面
> 
> 
> 



from time import sleep
from selenium import webdriver

desired_capas = {
“deviceName”: “emulator-5554”,
“platformName”: “Android”,

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值