09.05移动端appium基础操作

导入driver对象

  from appium import webdriver

 导入手机启动参数

注:获取appPackage 和 appActivity可使用adb命令

    adb shell dumpsys window w |findstr \/ |findstr name=
    adb shell dumpsys window | findstr mCurrentFocus

caps = {}
caps["deviceName"] = "127.0.0.1:7555"
caps["platformName"] = "Android"
caps["appPackag"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

脚本内启动其它app

    driver.start_activity(appPackage,appActivity)

 关闭app

 driver.close_app()  # 关闭当前操作的app,不会关闭驱动对象

 关闭驱动对象

driver.quit()   # 关闭驱动对象,同时关闭所有关联的app

 代码:

from appium import webdriver
import time
#server启动参数
caps = {}
#设备信息
caps["deviceName"] = "127.0.0.1:7555"
caps["platformName"] = "Android"
#app信息
caps["appPackag"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
driver.implicitly_wait(30)

time.sleep(5)
driver.quit()

1.APP元素定位操作

1.1Appium常用元素定位方式

1.1.1前置代码 

from appium import webdriver
import time
#server启动参数
caps = {}
#设备信息
caps["deviceName"] = "127.0.0.1:7555"
caps["platformName"] = "Android"
#app信息
caps["appPackag"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

1.1.2通过id定位

  方法:find_element_by_id(id_value) # id_value:为元素的id属性值
  业务场景:
      1.进入设置页面
      2.通过ID定位方式点击搜索按钮

 代码:

#点击设置
driver.find_element_by_id("com.android.settings:id/search").click()

1.1.3通过class定位

    业务场景:
        1.进入设置页面
        2.点击搜索按钮
        3.通过class定位方式点击输入框的返回按钮

代码

#点击设置
driver.find_element_by_id("com.android.settings:id/search").click()
#点击返回
driver.find_element_by_class_name('android.widget.ImageButton').click()

1.1.4通过xpath定位

  *** android端xptah常用属性定位:
      1. id ://*[contains(@resource-id,'com.android.settings:id/search')] 
      2. class ://*[contains(@class,'android.widget.ImageButton')]
      3. text ://*[contains(@text,'WLA')]

  *** 模糊定位 contains(@key,value): value可以是部分值

 场景: 1进入设置页面

           2.点击WLAN菜单栏

代码:

#点击wlan
driver.find_element_by_xpath('//*[contains(@text,"WLAN")]').click()

1.1.5通过class方式定位一组元素

场景:1进入设置页面

        2.点击WLAN菜单栏(class定位对象列表中第三个)

代码:

#定位一组元素
aa=driver.find_element_by_class_name('android.widget.TextView')
#打印数据查看
print(type(aa))
#取出对应的值点击
aa.click()

1.1.6发送数据到输入框

 场景: 1进入设置页面

           2点击搜索框

           3.输入1234

代码:

#点击搜索
driver.find_element_by_xpath('	//android.widget.TextView[@content-desc="搜索设置"]').click()
#输入内容1234
driver.find_element_by_id('android:id/search_src_text').send_keys(1234)

1.1.7清空输入框内容

方法:clear()

 场景: 1进入设置页面

           2点击搜索框

           3.输入1234

           4.删除已输入的1234

代码:

#点击搜索
driver.find_element_by_xpath('	//android.widget.TextView[@content-desc="搜索设置"]').click()
#输入内容1234
aa=driver.find_element_by_id('android:id/search_src_text')
aa.send_keys(1234)
time.sleep(2)
#删除1234
aa.clear()

1.1.8获取元素的文本内容

方法 text

业务场景:

        1.进入设置

        2.获取所有元素class为android.widget.TextView的文本内容

代码:

text=driver.find_elements_by_class_name('android.widget.TextView')
for i in text:
    print(i.text)

1.1.8.获取元素在屏幕上的坐标

方法:location

业务场景:

        1.进入设置页面

        2.获取搜索按钮在屏幕的坐标位置

代码:


#定位到搜索按钮
aa=driver.find_element_by_id("com.android.settings:id/search")
#打印搜索按钮在屏幕坐标
print(aa.location)

结果:

1.1.9swipe滑动事件

  ⚠️从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动
  方法:swipe(start_x, start_y, end_x, end_y, duration=None)
  参数:
      1.start_x:起点X轴坐标
      2.start_y:起点Y轴坐标
      3.end_x:  终点X轴坐标
      4.end_y,: 终点Y轴坐标
      5.duration: 滑动这个操作一共持续的时间长度,单位:ms

 业务场景:

        1.进入设置

        2.从坐标80,1188 滑到80,249

 代码:

#从坐标80,1188 滑到80,249
driver.swipe(80,1188,80,249,duration=1000)

1.1.10scroll滑动事件

业务场景:

        1.进入设置

        2.模拟手指将存储菜单滑动到WLAN菜单栏位置

  代码:

#定位存储菜单栏
e11=driver.find_element_by_xpath("//*[contains(@text,'存储设备和 USB')]")
#定位到WLAN菜单栏
el2=driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
#执行滑动操作
driver.scroll(e11,el2)

1.1.11drag拖拽事件

业务场景:

        1.进入设置

        2模拟手指将存储菜单滑动到WLAN菜单栏位置

代码:

#定位存储菜单栏
e11=driver.find_element_by_xpath("//*[contains(@text,'存储设备和 USB')]")
#定位到WLAN菜单栏
el2=driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
#执行滑动操作
driver.drag_and_drop(e11,el2)

1.1.12手指轻敲操作

业务场景:

        1.进入设置

        2点击WLAN选项

#通过元素定位方式敲击屏幕
el=driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).tap(el).perform()

1.1.13手指按操作

业务场景:

        1.进入设置

        2点击WLAN选项

#通过元素定位方式敲击屏幕
el=driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).tap(el).release().perform()
#通过坐标方式按下屏幕x=155,y=250
TouchAction(driver).press(x=155,y=250).release().perform()

1.1.14手指移动操作

业务场景:

        1.进入设置

        2.点击安全

        3.点击屏幕锁定方式

        4.绘制图案

#往下滑动
driver.swipe(160,684,160,221,duration=1000)
#点击安全
driver.find_element_by_xpath('//*[contains(@text,"安全")]').click()
#点击屏幕
driver.find_element_by_xpath('//*[contains(@text,"屏幕锁定方式")]').click()
#绘制图案 1032,236   890,375   747,527   1029,527
TouchAction(driver).press(x=1032,y=236).wait(100).move_to(x=890,y=375).wait(100).move_to(x=747,y=527).wait(100).move_to(x=1029,y=527).wait(100).release().perform()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值