appium
1. 连接
# coding=utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from time import sleep
desired_caps = {
"platformName":"Android",
"platformVersion": "5.1.1",
"deviceName": "127.0.0.1:62025",
"appPackage": "com.tal.kaoyan",
"appActivity": "com.tal.kaoyan.ui.activity.SplashActivity",
"noReset": False,
"app": r"D:\BaiduYunDownload\kaoyan3.1.0.apk", # 把安装包拖到cmd,
"unicodeKeyboard": True, # 识别中文
"resetKeyboard": True,
'automationName':'uiautomator2', # 抓取隐性元素
}
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(2)
2. 滑动:
def get_size():
x=driver.get_window_size()['width']
y=driver.get_window_size()['height']
return x,y
def left_swip():
rec = get_size()
x1 = rec[0]*0.9
x2 = rec[0]*0.5
y = rec[1]*0.5
driver.swipe(x1,y,x2,y,1000)
# 滑动
for i in range(0,2):
left_swip()
sleep(0.5)
3. 连续滑动
from appium.webdriver.common.touch_action import TouchAction
#连续滑动两次设置图案密码
for i in range(2):
TouchAction(driver).press(x=243,y=381).wait(2000)\
.move_to(x=455,y=390).wait(1000)\
.move_to(x=643,y=584).wait(1000)\
.move_to(x=647,y=784).wait(1000)\
.release().perform()
1. 多点滑动(放大,缩小)
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
def swip_big():
action1 = TouchAction(driver)
action2 = TouchAction(driver)
mul = MultiAction(driver)
action1.press(x=x*0.4,y=y*0.4).wait(2000).move_to(x=x*0.2,y=y*0.2).wait(2000).release()
action2.press(x=x*0.6,y=y*0.6).wait(2000).move_to(x=x*0.8,y=y*0.8).wait(2000).release()
mul.add(action1,action2)
mul.perform()
def swip_small():
action1 = TouchAction(driver)
action2 = TouchAction(driver)
mul = MultiAction(driver)
action1.press(x=x * 0.2, y=y * 0.2).wait(2000).move_to(x=x * 0.4, y=y * 0.4).wait(2000).release()
action2.press(x=x * 0.8, y=y * 0.8).wait(2000).move_to(x=x * 0.6, y=y * 0.6).wait(2000).release()
mul.add(action1, action2)
mul.perform()
if __name__ == '__main__':
for i in range(3):
swip_big()
for i in range(3):
swip_small()
2. 抓取隐形元素
error_message = "用户名或密码错误,你还可以尝试3次"
message = '//*[@text=\'{}\']'.format(error_message)
toast_element = WebDriverWait(driver, 5).until(lambda x: x.find_element_by_xpath(message))
6.显性等待
toast_element = WebDriverWait(driver, 5).until(lambda x: x.find_element_by_xpath(message))
7.捕获异常
try:
pass
except NoSuchElementException as e:
Pass
else
8.截图
driver.save_screenshot('test.PNG') # 当前位置
driver.get_screenshot_as_file('../zd.PNG') # 指定位置
1. Yaml
Msg.yaml
name: dz
age: 22
spoce:
name: 安生
age: 12
children:
- name: 詹阔
age: 13
- name: 展阔
age: 10
Xx.py
file = open('msg.yaml','r',encoding='utf-8')
data = yaml.load(file)
print(data)
d = {'name':'zd'}
ls = [1,23,3]
eee = yaml.dump(d)
eee2 = yaml.dump(ls)
print(eee)
print(eee2)
2. 日志(1)
import logging
logging.basicConfig(level=logging.INFO,filename='runlog.log',filemode='w',
format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
logging.info('I love my mother')
3. 日志(2)
log.conf 文件:
[loggers]
keys=root,infoLogger
[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler
[logger_infoLogger]
handlers=consoleHandler,fileHandler
qualname=infoLogger
propagate=0
[handlers]
keys=consoleHandler,fileHandler
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=INFO
formatter=form01
args=('runlog.log', 'a')
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
[formatter_form02]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
Xx.py
import logging.config
CON_LOG='log.conf'
logging.config.fileConfig(CON_LOG)
logging=logging.getLogger()
logging.info('ok')

浙公网安备 33010602011771号