记忆碎片之python定位APP节点

43 篇文章 20 订阅
1 篇文章 0 订阅
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这两个字端,
一个在开始12行一个在中间部分。

# 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的区别





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值