cmd里面运行:
netstat -ano | findstr "PID进程号码"
PID进程号在任务管理器里面获取
第一台是127.0.0.1:62001
第二台是127.0.0.1:62025
使用:adb connect 127.0.0.1:62001 进行连接 需要打开开发者选项
先启动adb start-server 再启动模拟器
# 多台设备的时候,需要再cap里面设置udid,用来识别设备
# 还需要再服务的设置bootstrap port
adb -s 127.0.0.1:62025 install tantan.apk 安装应用
adb uninstall tantan.apk 卸载应用
# package及activity的获取
#通过android sdk工具来,在sdk里面有一个工具,叫做aapt,我们可以直接通过这个工具来,
在命令行输入:aapt dump badging xxxx.apk,后面这个xxx.apk文件是我们aok所在的绝对路径,
敲入之后那么可以显示出来相关信息,可以在里面仔细找了,packageName、lanuchActivity这两个字端,
一个在开始1、2行一个在中间部分。
# appium使用xpath的定位比较慢,还有层级定位--------------------------------
element = driver.find_element_by_id("cn.com.open.mooc:id/rv_child")
element.find_element_by_class_name("android.widget.FrameLayout").click
# list定位----------------------------------------------------------------
element = driver.find_element_by_id("cn.com.open.mooc:id/rv_child")
elements = element.find_elements_by_class_name("android.widget.RelativeLayout")
for ele in elements:
# 这里还可以对元素做if判断,符合要求的再进行相应的操作
ele.click()
# 如果判断没有需要的元素,可以滑动操作
# self.driver.swipe(x1, y1, x2, y1, duration=1000)
# 如果需要定位某一个元素,却没有准确的节点可以参考时,可以直接使用点击某一点来定位
# self.driver.tap([(40, 1090)], 500) 注意,如果更换手机,需要注意屏幕分辨率,可应用九宫格解锁
# 类似网页Frame App里面是contexts 就是内嵌H5定位hybrid---------------------
#获取当前页面所有的contexts
webview = driver.contexts
#在获取到的contexts list里面去挨个循环
for context in webview:
#判断循环中单个的context是否是webview,如果是就进行切换,并且跳出循环
if 'WEBVIEW' in context:
driver.switch_to.context(context)
break
driver.find_element_by_link_text('PHP').click()
# uiautomator定位 根据一定条件来查找元素,我们这里的条件就是text属性为“请输入手机号”
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入手机号")')
ele.send_keys("123")
#另外new UiSelector().text("请输入手机号")'是text定位,还有className、id等定位
# 模糊定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().textContains("请输入手")')
ele.send_keys("123")
# 正则匹配定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^请输入手.*")')
ele.send_keys("123")
#resourec-id定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("cn.com.open.mooc:id/et_phone_edit")')
ele.send_keys('234')
# 通过id进行正则匹配定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceIdMatches(".+et_phone_edit")')
ele.send_keys('234')
# className定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")')
ele.send_keys('234')
# classNameMatches正则定位
ele = self.driver.find_element_by_android_uiautomator('new UiSelector().classNameMatches (".*EditText")')
ele.send_keys('234')
# 链式点击 如九宫格解锁
TouchAction(self.driver).press().move_to().move_to().release().perfrom()
# TouchAction的原理是将一系列的动作放在一个链条中
# 第一个动作呢?就是去点(用到press),只有点了开始点之后我们再将我们的动作移动到下一个点(move_to),
然后依次类推,当我们将所有的点都执行完毕之后就需要松开我们的点(release),然后进行提交(perform)
from appium.webdriver.common.touch_action import TouchAction
TouchAction(self.driver).press(x=217,y=600).move_to(x=0,y=150).wait(1000).move_to(x=0,y=150).wait(1000).move_to(x=113,y=0).move_to(x=113,y=0).release().perform()
# https://www.cnblogs.com/yaoqingzhuan/p/12902176.html selenium-->ActionChains和appium-->TouchAchtion的区别
记忆碎片之python定位APP节点
最新推荐文章于 2022-12-15 20:35:45 发布