0
点赞
收藏
分享

微信扫一扫

Appium点击、滑动、多指触控操作

陈情雅雅 2022-01-31 阅读 63
python

通过坐标进行点击:driver.tap()

# 通过坐标进行点击,参数1:x,y坐标,参数2:持续时间
driver.tap([(778, 986)], 500)

滑动屏幕:driver.swipe()

driver.swipe(start_x: 960, start_y: 800, end_x: 960, end_y: 300, duration: int = 0)
# 坐标起始位置,坐标终止位置,持续时间

以下为前程贷登陆操作,涉及到滑动操作

from appium.webdriver import Remote
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

desired_cap = {
    "platformName": "Android",
    "platformVersion": "7.1.2",
    "deviceName": "HUAWEI",
    "appPackage": "com.lemon.future",
    "appActivity": "com.lemon.future.activity.addition.WelcomeActivity",
    "noReset": True
}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                desired_capabilities=desired_cap)
driver.implicitly_wait(10)
# 获取屏幕的宽、高
win = driver.get_window_size()
print(win)
# 通过while循环来实现app初次启动滑屏立即体验
while True:
    driver.swipe(start_y=960, start_x=800, end_y=960, end_x=300, duration=200)
    loc = (MobileBy.ID, 'com.lemon.future:id/btn_start')
    try:
        WebDriverWait(driver, 2, 0.5).until(
            EC.visibility_of_element_located(loc)
        )
    except:
        pass
    else:
        break
driver.find_element(*loc).click()
driver.find_element_by_android_uiautomator('new UiSelector().text("注册/登录")').click()
driver.find_element_by_android_uiautomator('new UiSelector().text("请输入手机号码")').send_keys("1868xxxxxx")
driver.find_element_by_android_uiautomator('new UiSelector().text("下一步")').click()
driver.find_element_by_android_uiautomator('new UiSelector().text("请输入登录密码")').send_keys("python")
driver.find_element_by_android_uiautomator('new UiSelector().text("确定")').click()
driver.find_element_by_android_uiautomator('new UiSelector().text("马上设置")').click()
driver.find_element_by_android_uiautomator('new UiSelector().text("创建手势密码")').click()
driver.find_element_by_android_uiautomator('new UiSelector().text("确定")').click()

以下为百度地图手指缩放地图(多指触控)操作:

import time
from appium.webdriver import Remote
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction

desired_cap = {
    "platformName": "Android",
    "platformVersion": "7.1.2",
    "deviceName": "HUAWEI",
    "appPackage": "com.baidu.BaiduMap",
    "appActivity": "com.baidu.baidumaps.WelcomeScreen",
    "noReset": True,#这个参数是用来控制是否清除session信息的
    "adbExecTimeout": "50000"#如果是断点调试的时候,经常会出现timeout,adb connect超时
}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                desired_capabilities=desired_cap)
driver.implicitly_wait(10)
win_size = driver.get_window_size()
print(win_size)
h = win_size['height']
w = win_size['width']
time.sleep(10)
for i in range(3):
    t1 = TouchAction(driver)
    t1.press(x=w*0.5, y=h*0.4).wait(50)
    t1.move_to(x=w*0.5, y=h*0.2).wait(50).release()
    t2 = TouchAction(driver)
    t2.press(x=w*0.5, y=h*0.6).wait(50)
    t2.move_to(x=w*0.5, y=h*0.8).wait(50).release()
    ma = MultiAction(driver)
    ma.add(t1, t2)
    ma.perform()

以下为九宫格函数封装:

def slid_pwd(driver, ele, pwd):
    rect = ele.rect
    # {'height': 900, 'width': 900, 'x':90, 'y':653}
    left = rect['x']
    top = rect['y']
    y_ = rect['height']/6
    x_ = rect['width']/6
    dic = {1: {'x': rect['x']+x_, 'y': rect['y']+y_},
           2: {'x': rect['x']+3*x_, 'y': rect['y']+y_},
           3: {'x': rect['x']+5*x_, 'y': rect['y']+y_},
           4: {'x': rect['x']+x_, 'y': rect['y']+3*y_},
           5: {'x': rect['x']+3*x_, 'y': rect['y']+3*y_},
           6: {'x': rect['x']+5*x_, 'y': rect['y']+3*y_},
           7: {'x': rect['x']+x_, 'y': rect['y']+5*y_},
           8: {'x': rect['x']+3*x_, 'y': rect['y']+5*y_},
           9: {'x': rect['x']+5*x_, 'y': rect['y']+5*y_}
           }
    ta1 = TouchAction(driver)
    ta1.press(**dic[pwd[0]]).wait(100)
    for i in pwd:
        ta1.move_to(**dic[i]).wait(100)
    ta1.release()
    ta1.perform()
loc = (MobileBy.ID, 'com.xxx.future:id/gesturepwd_create_lockview')
ele = driver.find_element(*loc)
slid_pwd(driver, ele, [1, 2, 3, 5, 7, 8, 9])
举报

相关推荐

0 条评论