# -*- coding:utf-8 -*-
import os,re,time,datetime,yaml
import logging
from appium import webdriver
import warnings
def Delete_screenshots(address):
print('即将删除图片列表:')
if address =='T':
#rf调用的path地址,python调用需注释。
path = abspath + "\screenshot"
#python运行时使用下面代码,注释上面。
# path = os.path.abspath(r"..") + "\screenshot"
else:
path = abspath + "\screenshot" + "\\" + address
for i in os.listdir(path):
path_file = os.path.join(path, i)
if os.path.isfile(path_file):
print(path_file)
os.remove(path_file)
else:
for f in os.listdir(path_file):
path_file2 = os.path.join(path_file, f)
if os.path.isfile(path_file2):
print(path_file2)
os.remove(path_file2)
print('删除成功!')
def driver():
x = init_yaml()
warnings.simplefilter('ignore', ResourceWarning)
capailities = {
'platformName': 'Android',
'deviceName': x['deviceName'],
'platformVersion': x['platformVersion'],
'appPackage': x['appPackage'],
'appActivity': x['appActivity'],
#'unicodeKeyboard': "True", # 使用unicode输入法
#'resetKeyboard': "True", # 重置输入法到初始状态
'noReset': "True", # 启动app时不要清除app里的原有的数据
'noSign': "True",
'AppWaitActivity': ' app包名.IndexActivity',
'NewCommandOut': '180',
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', capailities)
driver.wait_activity(".IndexActivity",10)
# 跳过更新弹窗
try:
driver.find_element_by_id(" app包名/next_btn").click() except:
time.sleep(1)
return driver
def myprint(*args):
print(*args)
#pass
# 该方法用来确认name元素是否存在,如果存在返回flag=true,否则返回false
def isElementExist(driver,element):
flag=True
browser=driver
try:
#browser.find_element_by_css_selector(element)
browser.find_element_by_xpath(element)
return flag
except:
flag=False
return flag
#页面寻找元素
def findItem(driver,element):
source = driver.page_source
if element in source:
return True
else:
return False
# 该方法用来确认id元素是否存在,如果存在返回flag=true,否则返回false
def idisElementExist(driver,element):
flag=True
browser=driver
try:
#browser.find_element_by_css_selector(element)
browser.find_element_by_id(element)
return flag
except:
flag=False
return flag
#将时分秒转换成秒
def ts(driver,t):
h,m,s = t.strip().split(":")
return int(h) * 3600 + int(m) * 60 + int(s)
print(ts)
def swipe_until_find_in_list(driver,ele):
# 滚动直至找到元素
i=0
while(1<10):
try:
ele.click() # 尝试点击元素
break
except:
swipeUp(driver)
i = i + 1
if (i==10):
print("没有找到元素")
# 该方法用来确认class元素是否存在,如果存在返回flag=true,否则返回false
def classisElementExist(driver,element):
flag=True
browser=driver
try:
#browser.find_element_by_css_selector(element)
browser.find_element_by_class_name(element)
return flag
except:
flag=False
return flag
def login(driver,user,password):
# 登录
try:
driver.implicitly_wait(2)
driver.find_element_by_id("app包名/ll_me").click()
except:
pass
time.sleep(1)
username = driver.find_element_by_id("username").text
if (username != "登录/注册"):
logging.debug("已登录,执行登出并登录")
time.sleep(1)
logout(driver)
else:
time.sleep(1)
driver.find_element_by_id("avatar").click()
driver.implicitly_wait(2)
if ("Login" not in driver.current_activity):
raise Exception("当前页面不是登录页面")
# 输入手机号码
tel = driver.find_element_by_id("myEdit")
tel.clear()
tel.send_keys(user)
# 输入密码
pwd_field = driver.find_element_by_id("et_password")
pwd_field.clear()
pwd_field.send_keys(password)
driver.find_element_by_id("button1").click()
driver.implicitly_wait(3)
driver.wait_activity(".IndexActivity",5)
if(driver.current_activity==".IndexActivity"):
logging.debug("登录成功")
else:
logging.debug("登录失败")
def logout(driver):
#登出
try:
driver.implicitly_wait(2)
driver.find_element_by_id("app包名/ll_me").click()
except:
pass
username = driver.find_element_by_id("username").text
if (username == "登录/注册"):
logging.debug("未登录,跳过登出操作")
else:
driver.find_element_by_id("avatar").click()
driver.implicitly_wait(2)
driver.find_element_by_id("button_exit").click()
time.sleep(1)
if (driver.current_activity==".IndexAtivity"):
logging.debug("登出成功")
def current_time():
# 返回当前时间
return datetime.datetime.now().strftime('%Y%m%d%H%M%S')
def isElementDisplayed(driver,type,ele):
# 判断控件是否存在
#isElementDisplayed(driver,By.ID,"my")
#isElementDisplayed(driver,By.XPATH,"my")
try:
driver.find_element(by=type,value=ele)
return True
except:
return False
def init_yaml():
yamlpath = os.path.dirname(__file__) + "\element.yaml"
#print(yamlpath)
with open(yamlpath, encoding='utf-8') as f:
x = yaml.load(f,Loader=yaml.Loader)
return x
def getSize(driver):
# 获得屏幕大小宽和高
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return (x, y)
def swipeUp(driver,t=1):
# 手指向上滑动
l = getSize(driver)
x1 = int(l[0] * 0.5) #x坐标
y1 = int(l[1] * 0.75) #起始y坐标
y2 = int(l[1] * 0.25) #终点y坐标
driver.swipe(x1, y1, x1, y2,t*1000)
def swpeUpBySize(driver,height,t=1):
l = getSize(driver)
x1 = int(l[0] * 0.5) # x坐标
y1 = int(l[1] * 0.75) # 起始y坐标
y2 = int(l[1]*0.75 -height) # 终点y坐标
driver.swipe(x1, y1, x1, y2, t * 1000)
def swipeDown(driver,t=1):
# 手指向下滑动
l = getSize(driver)
x1 = int(l[0] * 0.5) #x坐标
y1 = int(l[1] * 0.25) #起始y坐标
y2 = int(l[1] * 0.75) #终点y坐标
driver.swipe(x1, y1, x1, y2,t*1000)
def swipeDownBySize(driver,height,t=1):
# 手指向下一点点
l = getSize(driver)
x1 = int(l[0] * 0.5) #x坐标
y1 = int(l[1] * 0.25) #起始y坐标
y2 = int(l[1] * 0.75 -height) #终点y坐标
driver.swipe(x1, y1, x1, y2, t*1000)
def swipLeft(driver,t=1):
# 手指向左滑动
l=getSize(driver)
x1=int(l[0]*0.75)
y1=int(l[1]*0.5)
x2=int(l[0]*0.05)
driver.swipe(x1,y1,x2,y1,t*1000)
def swipRight(driver,t=1):
# 手指向右滑动
l=getSize(driver)
x1=int(l[0]*0.05)
y1=int(l[1]*0.5)
x2=int(l[0]*0.75)
driver.swipe(x1,y1,x2,y1,t*1000)
def tap(driver,x,y,duration=500):
# 点击坐标
driver.tap([(x,y)],duration)
def scroll(driver,el1,el2):
# 从元素el1滑动至元素el2
driver.scroll(el1,el2)