飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

案例一: 美多商城自动化登录

需求: 对于美多商城实现自动化登录,并生成登录后的测试报告。

1: 目录结构:

在这里插入图片描述

2: 代码:

2.1: main.py

import unittest
from BeautifulReport import BeautifulReport

if __name__ == '__main__':
    # 1: 创建测试套件,把当前目录下的tests下的文件加入到容器中
    suit = unittest.defaultTestLoader.discover('./tests')
    # 2: 根据套件创建runner
    runner = BeautifulReport(suit)
    # 3; 使用runner 启动测试报告
    runner.report('美多商城登录登出报告', '测试报告.html', './reports')

2.2 : test_users:

import unittest
from selenium.webdriver import Chrome
from parameterized import parameterized
import time

class MeiduoTest(unittest.TestCase):

    # 1: 前置方法,创建Chrome对象
    def setUp(self) -> None:
        print("我是前置方法")
        self.driver = Chrome()
    # 2:后置方法,退出浏览器
    def tearDown(self) -> None:
        print("我是后置方法")
        self.driver.quit()

    # 3:测试用例:
    def test_users(self):
        print("我是测试用例")
        # 3.1: 打开网页
        self.driver.get("http://mp-meiduo-python.itheima.net")
        # 3.2: 找到登录按钮,点击登录
        self.driver.find_element_by_link_text('登录').click()
        # 3.3: 找到账号和密码的输入框,先清空数据,然后再填写账号和密码
        list1 = ['name_input', 'pass_input']
        list2 = ['admin', 'admin']
        flag = 0
        for name in list1:
            # 3.3.1: 获取元素
            el = self.driver.find_element_by_class_name(name)
            # 3.3.2: 清空元素
            el.clear()
            # 3.3.3: 输入元素
            el.send_keys(list2[flag])
            flag += 1

        # 3.4: 复选框:如果选中了则取消选中
        el = self.driver.find_element_by_name('remembered')
        if el.is_selected():
            el.click()
        # 3.5: 找到登录按钮,进行登录
        self.driver.find_element_by_class_name('input_submit').click()

        # 3.6:退出登录
        self.driver.find_element_by_class_name('quit').click()

案例二: QQ邮箱自动化登录

将用户名和密码的位置换成自己的就可以实现自动化登录。

import unittest
from selenium.webdriver import Chrome
from parameterized import parameterized
import time

class QQ_Login_Test(unittest.TestCase):

    # 1: 前置方法,创建Chrome对象
    def setUp(self) -> None:
        print("我是前置方法")
        self.driver = Chrome()
    # 2:后置方法,退出浏览器
    def tearDown(self) -> None:
        print("我是后置方法")
        self.driver.quit()

    # 3:测试用例:
    def test_users(self):
        print("我是测试用例")
        # 3.1: 打开网页
        self.driver.get("https://mail.qq.com/")
        time.sleep(2)
        # 获取登录模块所在的内置页面对象
        frame = self.driver.find_element_by_id('login_frame')
        # 切换到内置页面中
        self.driver.switch_to.frame(frame)
        # 点击账号密码登录
        self.driver.find_element_by_id('switcher_plogin').click()
        time.sleep(2)
        # 3.3: 找到账号和密码的输入框,先清空数据,然后再填写账号和密码
        list1 = ['u', 'p']
        list2 = ['用户名', '密码']
        flag = 0
        for name in list1:
            # 3.3.1: 获取元素
            el = self.driver.find_element_by_id(name)
            # 3.3.2: 清空元素
            el.clear()
            time.sleep(1)
            # 3.3.3: 输入元素
            el.send_keys(list2[flag])
            time.sleep(1)
            flag += 1

        # 3.4: 复选框:如果选中了则取消选中low_login_wording
        el = self.driver.find_element_by_id('low_login_wording')
        if el.is_selected():
            el.click()
        # 3.5: 找到登录按钮,进行登录
        self.driver.find_element_by_id('login_button').click()
        time.sleep(3)

案例三: 抖音,快手,火山自动刷视频

from appium import webdriver
import time
import random

SARTTIME: int = 2
ENDTIME: int = 10
STIME: int = 10

# 初始化平台信息
desired_caps = {
    'platformName': 'Android',  # 表示平台类型
    'platformVersion': '7.1.2',  # 表示平台的系统版本
    'deviceName': '****',  # 表示的是设备的ID,如果当前电脑只连接了一台手机或模拟器,可以使用4个*号代替
    'appPackage': 'com.kuaishou.nebula',  # 表示app的包名
    'appActivity': 'com.yxcorp.gifshow.HomeActivity',  # 表示的是app的界面名
    'noReset': True  # 启动app时不要清除app里的原有的数据
}


# 向上滑动。x轴保持不变,y轴:由大变小
def swipe_up(driver, width, height):
    # 起点
    _x = random.randint(4, 7)
    _y = random.randint(6, 7)
    x1 = int(width * 0.1 * _x)
    y1 = int(height * _y * 0.1)
    print(f'起点{x1, y1}')

    # 终点
    stop_y = random.randint(2, 4) * 0.1
    duration = random.randint(1, 5) * 50
    x2 = x1
    y2 = int(height * stop_y)
    driver.swipe(x1, y1, x2, y2, duration)
    print(f'终点{x2, y2}')


def test_uc(name='快手'):
    if name == '快手':
        #### 快手配置信息
        desired_caps['appPackage'] = 'com.kuaishou.nebula'
        desired_caps['appActivity'] = 'com.yxcorp.gifshow.HomeActivity'
    elif name == '抖音':
        desired_caps['appPackage'] = 'com.ss.android.ugc.aweme.lite'
        desired_caps['appActivity'] = 'com.ss.android.ugc.aweme.main.MainActivity'
    elif name == '火山':
        desired_caps['appPackage'] = 'com.ss.android.ugc.live'
        desired_caps['appActivity'] = '.main.MainActivity'

    print(f'小米{name}启动')
    # 远程控制
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    time.sleep(STIME)

    # 获取屏幕宽高
    width = driver.get_window_size()["width"]
    height = driver.get_window_size()["height"]

    n = random.randint(1, 4)
    i = 0
    while True:
        swipe_up(driver, width, height)  # 滑动

        _time = random.randint(SARTTIME, ENDTIME)
        time.sleep(_time)  # 延时

        if i == 30 * n:
            print(f'{name}退出')
            break

        print(f'time={_time}, i={i}, n={n*30}')
        i = i + 1

    driver.quit()  # 退出


if __name__ == '__main__':
    i = 0
    while True:
        name_list = ['快手', '抖音', '火山']
        if i == len(name_list):
            i = 0
        try:
            test_uc(name_list[i])
            i = i + 1
        except Exception as e:
            print(e)

        time.sleep(STIME)

posted on 2020-10-24 19:47  飞行的猪哼哼  阅读(85)  评论(0)    收藏  举报