通过坐标进行点击: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])