用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

添加模块

2020-09-30 作者: 追风鸟举报

[python]代码库

# coding=UTF-8
'''
@模块:添加模块

@用例:用ID添加设备到列表,进入预览后删除设备

@注意事项:运行此脚本会“清空设备列表的所有设备”,所添加设备必须在线
'''

#引用库↓
from allure_commons.model2 import Attachment
from appium import webdriver
from time import sleep
import traceback
import time
import random
import pytest
import allure
#获取设备、APP信息↓   在cmd窗口查询app包名和activity命令:adb shell dumpsys activity activities
desired_caps = {}
desired_caps['platformName'] = 'Android'                #手机系统
desired_caps['platformVersion'] = ''                    #系统版本
#desired_caps['deviceName'] = 'emulator-5554'           #设备型号,连接手机后通过cmd窗口:adb devices
desired_caps['deviceName'] = '8BNDU17B11001942'         #荣耀9
# desired_caps['deviceName'] = 'YDCIDQXOUGSOJZGY'       #IQOO Z1
desired_caps['appPackage'] = 'com.juanvision.EseeNetProj'                               #APP包名
desired_caps['appActivity'] = 'com.juanvision.modulelogin.activity.SplashActivity'      #APP活动类
desired_caps['noReset'] = 'true'                                                        #不重置APP
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)                 #连接appium端口
driver.implicitly_wait(15)                                                              #隐式等待

#设置报错时截图储存路径 ↓
now = int(time.time())                     #时间戳,用于避免文件重命名
now = str(now)                             #设置时间戳为字节格式才能使用
A = './result/'                            #设置截图保存路径
B = A + now + "添加异常.png"

device = '925294758'                       #配置设备ID

# 获取机器屏幕大小x,y用于滑动屏幕
def getSize():
    x = driver.get_window_size()['width']
    y = driver.get_window_size()['height']
    return (x, y)

# 设置向上滑动
def swipedown(t):
    l = getSize()
    x1 = int(l[0] * 0.5)              # x坐标
    y1 = int(l[1] * 0.5)              # 起始y坐标
    y2 = int(l[1] * 0.35)             # 终点y坐标
    driver.swipe(x1, y1, x1, y2, t)

# 设置向下滑动
def swipeup(t):
    l = getSize()
    x1 = int(l[0] * 0.5)              # x坐标
    y1 = int(l[1] * 0.35)             # 起始y坐标
    y2 = int(l[1] * 0.5)              # 终点y坐标
    driver.swipe(x1, y1, x1, y2, t)

# 设置向右滑动
def swiperight(t):
    l = getSize()
    x1 = int(l[0] * 0.5)              # x坐标
    y1 = int(l[1] * 0.86)             # 起始y坐标
    x2 = int(l[0] * 0.7)              # 终点x坐标
    driver.swipe(x1, y1, x2, y1, t)

def login():    # 检查是否登录账号,登录则pass,未登录则登录。请勿使用yuncun1账号,此脚本会清空设备列表
    try:
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_name_edt').is_displayed()  # 检查是否位于登录界面
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_name_edt').clear()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_name_edt').send_keys('332@yopmail.com')
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_pwd_edt').send_keys('123456')
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/confirm_btn').click()
    except:
        pass

def reset():    # 检查是否在设备列表界面,否则重启APP
    try:
        sleep(1)
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/device_ll').is_displayed()
        pass
    except:
        driver.close_app()     # 关闭APP
        sleep(1)
        driver.launch_app()    # 重启APP

def findpass():     # 检查设备列表是否有设备,有则清空设备列表
    try:
        driver.find_element_by_xpath('//*[contains(@text,"更多")]').is_displayed()
        driver.find_element_by_xpath('//*[contains(@text,"更多")]').click()
        driver.find_element_by_xpath('//*[contains(@text,"删除")]').click()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/dialog_confirm_btn').click()
        sleep(3)
        findpass()
    except:
        pass

def findpass2():    #检查设备是否在线,否则刷新列表
    try:
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/dialog_confirm_btn').is_displayed()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/dialog_confirm_btn').click()
        swipeup(1000)
        sleep(3)
        driver.find_element_by_xpath('//*[contains(@text,device)]').click()
        findpass2()
    except:
        pass

def findpass3():     #检查设备是否存在当前页面,否则下滑页面查找
    try:
        sleep(3)
        driver.find_element_by_xpath('//*[contains(@text,device)]').is_displayed()
        driver.find_element_by_xpath('//*[contains(@text,device)]').click()
        findpass2()
    except:
        swipedown(1000)
        findpass3()

def findpass4():    #检查是否出现引导提示,是则关闭
    try:
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/common_title_right_iv').is_displayed()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/common_title_right_iv').click()
    except:
        pass

def findpass5():    #检查是否为专用测试账号,否则重新登录
    driver.find_element_by_id('com.juanvision.EseeNetProj:id/main_person_center_ll').click()
    try:
        driver.find_element_by_xpath('//*[contains(@text,"332@yopmail.com")]').is_displayed()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/device_ll').click()
        pass
    except:
        driver.find_element_by_xpath('//*[contains(@text,"设置")]').click()
        driver.find_element_by_xpath('//*[contains(@text,"退出登录")]').click()
        driver.find_element_by_xpath('//*[contains(@text,"退出登录")]').click()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_name_edt').clear()
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_name_edt').send_keys('332@yopmail.com')
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/user_pwd_edt').send_keys('123456')
        driver.find_element_by_id('com.juanvision.EseeNetProj:id/confirm_btn').click()
        sleep(3)

class Test_adding:
    @allure.feature('用例:用ID添加设备到列表,进入预览后删除设备')
    #@pytest.mark.repeat(100)
    def test_adding(self):
        try:
            login()
            reset()
            findpass5()
            findpass()
            driver.find_element_by_id('com.juanvision.EseeNetProj:id/common_title_right_iv').click()
            findpass4()
            driver.find_element_by_xpath('//*[contains(@text,"其它添加方式")]').click()
            driver.find_element_by_xpath('//*[contains(@text,"通过ID/IP添加")]').click()
            driver.find_elements_by_id('com.juanvision.EseeNetProj:id/content_edt')[0].send_keys(device)
            driver.find_element_by_xpath('//*[contains(@text,"完成")]').click()
            sleep(5)
            findpass3()
            sleep(5)
            sleep(3)
            driver.press_keycode(4)
            sleep(1)
            driver.find_element_by_id('com.juanvision.EseeNetProj:id/device_ll').click()
        except:
            with allure.step('失败截图'):
                traceback.print_exc()                  # 打印进程异常详情
                driver.get_screenshot_as_file(B)       # 截图保存到指定位置
                allure.attach.file(B, attachment_type=allure.attachment_type.PNG)    #引用截图到Allure报告
            assert False

#unittest单独调试使用,运行pytest框架必须注释以下内容 ↓
# def runs():
#     i = 0
#     while i < 5:
#         Test_adding.test_adding(self=0)
#         i += 1
#         print("------第"+str(i)+"次运行OK------")
# try:
#     print ("start------开始测试")
#     sleep(3)
#     runs()
#     sleep(3)
#     print ("pass------测试通过")
#     driver.quit()                         # 退出
# except:
#     traceback.print_exc()                 # 打印进程异常详情
#     print("fail------添加异常------")
#     driver.get_screenshot_as_file(B)      # 报错时截图保存


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...