python+appium,点击/id,name,关闭app等demo

# -*- 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)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linmumum

吃饱睡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值