Z-Queen

1.说明

 

2. 鼠标滑动操作代码

from appium import webdriver
import time

from appium.webdriver.common.touch_action import TouchAction

desired_caps = {
    \'platformName\':\'Android\',          # 测试Android系统
    \'platformVersion\':\'7.1.2\',         # Android版本 可以在已连接手机 设置->关于手机 中查看
    \'deviceName\':\'127.0.0.1:62001\',    # cmd中使用 adb devices 命令查看已连接的设备
    \'automationName\':\'UiAutomator2\',   # 自动化引擎(默认UiAutomator2即可)
    \'noReset\': True,                   # 不要重置app的状态(比如,已经登陆的app,我们运行项目的时候保留之前的状态)
    \'fullReset\': False,                        # 不要清理app的缓存数据(比如,已经登陆的app,我们运行项目的时候保留之前的状态)
    \'appPackage\':"org.cnodejs.android.md",     # 应用的包名(打开对应包名的app)
    \'appActivity\': ".ui.activity.MainActivity" # 应用的活动页名称
}
driver = webdriver.Remote(\'http://127.0.0.1:4723/wd/hub\',desired_capabilities=desired_caps)
time.sleep(5)

viewgroup = driver.find_element_by_android_uiautomator(\'new UiSelector().className("android.view.ViewGroup").index(2)\')

# 获取元素控件的坐标位置(使用坐标位置去计算滑动坐标,可以保证我们在不同的手机上正常运行)
print(\'location\', viewgroup.location) # {\'x\': 0, \'y\': 120} 元素的左上角坐标
print(\'rect\', viewgroup.rect)         # {\'height\': 1440, \'width\': 900, \'x\': 0, \'y\': 120}  元素宽高和元素左上角坐标
zb = viewgroup.rect

# 滑动的开始坐标x,y   结束坐标x,y   滑动时间(毫秒)
# 当前设置效果为:从下往上滑动
driver.swipe(start_x=zb[\'width\']/2,start_y=zb[\'height\']+zb[\'y\']-1,end_x=zb[\'width\']/2,end_y=zb[\'y\']+1,duration=200)
# 等同于
# driver.swipe(start_x=450,start_y=1559,end_x=450,end_y=121,duration=200)

# 当前设置效果为:从上往下滑动
driver.swipe(start_x=300, start_y=200, end_x=300, end_y=800, duration=200)
time.sleep(3)

# 点击页面中的第一个帖子的作者
first_tiezi = \'//*[@resource-id="org.cnodejs.android.md:id/recycler_view"]/android.widget.LinearLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]\'
driver.find_element_by_xpath(first_tiezi).click()
time.sleep(3)

# 当前设置效果为:从右往左滑动
driver.swipe(start_x=550,start_y=700,end_x=500,end_y=700,duration=200)
time.sleep(3)

# 当前设置效果为:从左往右滑动
driver.swipe(start_x=50,start_y=700,end_x=550,end_y=700,duration=200)
time.sleep(3)

 

3.鼠标滑动查找元素

from appium import webdriver
import time

desired_caps = {
    \'platformName\':\'Android\',          # 测试Android系统
    \'platformVersion\':\'7.1.2\',         # Android版本 可以在已连接手机 设置->关于手机 中查看
    \'deviceName\':\'127.0.0.1:62001\',    # cmd中使用 adb devices 命令查看已连接的设备
    \'automationName\':\'UiAutomator2\',   # 自动化引擎(默认UiAutomator2即可)
    \'noReset\': True,                   # 不要重置app的状态(比如,已经登陆的app,我们运行项目的时候保留之前的状态)
    \'fullReset\': False,                        # 不要清理app的缓存数据(比如,已经登陆的app,我们运行项目的时候保留之前的状态)
    \'appPackage\':"org.cnodejs.android.md",     # 应用的包名(打开对应包名的app)
    \'appActivity\': ".ui.activity.MainActivity" # 应用的活动页名称
}
driver = webdriver.Remote(\'http://127.0.0.1:4723/wd/hub\',desired_capabilities=desired_caps)
time.sleep(5)

viewgroup = driver.find_element_by_android_uiautomator(\'new UiSelector().className("android.view.ViewGroup").index(2)\')

# 获取元素控件的坐标位置(使用坐标位置去计算滑动坐标,可以保证我们在不同的手机上正常运行)
print(\'location\', viewgroup.location) # {\'x\': 0, \'y\': 120} 元素的左上角坐标
print(\'rect\', viewgroup.rect)         # {\'height\': 1440, \'width\': 900, \'x\': 0, \'y\': 120}  元素宽高和元素左上角坐标
zb = viewgroup.rect

\'\'\'
  方案一:
  滑动的开始坐标x,y   结束坐标x,y   滑动时间(毫秒)
  当前设置效果为:从下往上滑动
  滑动查找元素文本内容为:你们学会了没
  找到元素后,点击元素
  优点:一边滑动,一边查找
  缺点:使用这种方法必须要精准的控制滑动速度,否则滑动过快,可能会错过目标元素
\'\'\'
flag = False
while True:
     driver.swipe(start_x=zb[\'width\']/2,start_y=zb[\'height\']+zb[\'y\']-1,end_x=zb[\'width\']/2,end_y=zb[\'y\']+1,duration=200)
     # 等同于 driver.swipe(start_x=450,start_y=1559,end_x=450,end_y=121,duration=200)
     eles = driver.find_elements_by_id(\'org.cnodejs.android.md:id/tv_title\')  # 获取多个元素的值
     for ele in eles:
         print(ele.text)
         if ele.text == "你们学会了没":
             ele.click()
             flag = True
             break
     if flag == True:
         break  # 中断while 循环


\'\'\'
  方案二:
  滑动查找元素文本内容为:你们学会了没(使用的时候更改查找内容即可)
  找到元素后,点击元素
  缺点:不能一边滑动一边加载(适用于通讯录之类的,不需要加载的),找不到会报错的
\'\'\'
ele = driver.find_element_by_android_uiautomator(\'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("你们学会了没").instance(0));\')
ele.click()

 

分类:

技术点:

相关文章:

  • 2021-05-06
  • 2021-06-13
  • 2021-11-21
  • 2021-09-24
  • 2021-04-12
  • 2019-07-14
  • 2021-07-02
猜你喜欢
  • 2021-10-04
  • 2021-09-20
  • 2021-11-06
  • 2021-08-04
  • 2021-09-25
  • 2021-12-13
  • 2021-08-08
相关资源
相似解决方案