ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Selenium 打包为.exe执行

2022-09-06 16:33:34  阅读:347  来源: 互联网

标签:exe Selenium py driver yaml print import login 打包


前言:不依赖环境执行,拓展UI自动化使用的场景

 

一、项目结构介绍

  • case:测试用例次存放目录
  • config:主要存放yaml文件配置
  • ele:元素的定位以及执行动作
  • tools:HTMLTestRunner以及webdriver
  • ico:生成exe是的图标
  • run:主执行程序

 

二、代码演示

 1.创建 yyds.yaml 以及 read_yaml,py

  • yyds.yaml 
# yyds.yaml

- user_name: bky
- pass_word: test666
- base_url: https://account.cnblogs.com/
  • read_yaml.py
# coding:utf-8
import yaml
import os, sys

# 获取当前脚本所在文件夹路径
curPath = os.path.dirname(os.path.realpath(__file__))

# 获取yaml文件路径
# yamlPath = os.path.join(curPath, "yyds.yaml")
yamlPath = os.path.join(os.path.dirname(os.path.realpath(sys.executable)), './config/yyds.yaml')

# open方法打开直接读出来
f = open(yamlPath, 'r', encoding='utf-8')
cfg = f.read()
# print(type(cfg))  # 读出来是字符串
# print(cfg)

# d = yaml.load(cfg)  # 用load方法转字典
d = yaml.load(cfg, Loader=yaml.FullLoader)
username = d[0]["user_name"]
password = d[1]["pass_word"]
baseurl = d[2]["base_url"]
print("\nUI自动化")
print("\n温馨提示:执行失败请检查Google浏览器版本,当前driver版本104.0.xxx.xxx,如不匹配请自行下载")
print("下载地址:http://chromedriver.storage.googleapis.com/index.html\n")

print("登录账号:%s\n登录密码:%s\n访问地址:%s" %(username, password, baseurl))

#print(type(d))

 

2.创建 login.ele.py 以及 test_all_case.py

  • login.ele.py
# -*- coding:UTF-8 -*-
from selenium.webdriver.common.by import By
from time import sleep

class Login():

    user_loc = (By.ID, "mat-input-0")
    pass_loc = (By.ID, "mat-input-1")
    login_loc = (By.XPATH, "//span[contains(.,'登录')]")

    def user_name(self, driver, name):
        sleep(1.5)
        try:
            driver.find_element(*self.user_loc).send_keys(name)
            print("\n输入 【%s】 账号成功" %name)
        except:
            print("\n输入账号失败")

    def pass_word(self, driver, word):
        sleep(1.5)
        try:
            driver.find_element(*self.pass_loc).send_keys(word)
            print("输入 【%s】 密码成功" %word)
        except:
            print("输入密码失败")

    def login_button(self, driver):
        try:
           # el_standard = driver.find_element(*self.login_loc)
           # ActionChains(driver).move_to_element(el_standard).perform()
           sleep(0.5)
           driver.find_element(*self.login_loc).click()
           # el_standard.click()
           print("登录成功")
        except:
           print("登录失败")
  • test_all_case.py
# -*- coding:UTF-8 -*-
from selenium import webdriver
import config.read_yaml
from ele.login_ele import Login
import unittest
from time import sleep
from selenium.webdriver.chrome.options import Options

'''

㎡

'''

class Test_all(unittest.TestCase):
    """BKY FRMO ㎡"""
    @classmethod
    def setUpClass(self):
        global driver
        option = Options()
        option.add_experimental_option('useAutomationExtension', False)
        option.add_experimental_option("excludeSwitches", ['enable-automation'])
        option.add_argument("disable-blink-features=AutomationControlled")
        driver = webdriver.Chrome('tools\chromedriver.exe',options=option)
        print('加载驱动完成 √')
        driver.maximize_window()  # 浏览器全屏显示
        driver.get(config.read_yaml.baseurl)
        print('加载页面完成 √\n')

        print('正在执行中,请耐心等待...')
        print('注:测试报告详见此目录下的report.html\n')
        sleep(10)

    def test_a_login(self):
        """【登录】"""
        Login().user_name(driver, name=config.read_yaml.username)
        Login().pass_word(driver, word=config.read_yaml.password)
        Login().login_button(driver)

 

3.创建 run.py

  • run.py
# -*- coding:UTF-8 -*-

from tools.HTMLTestRunner_PY3 import HTMLTestRunner
import unittest
from case.test_all_case import Test_all

suit = unittest.TestSuite()
suit.addTest(unittest.makeSuite(Test_all))
with open("report.html", 'wb') as f:  # 改为with open 格式
        HTMLTestRunner(stream=f, title="UI自动化-测试报告", description="演示Demo").run(suit)

 

4.执行打包命令

  • pyinstaller -i lcon.ico -F -c run.py

 

5.打包成功后出现dist文件夹,将 run.exe 移到与 run.py 同级即可

 

 

 6.执行测试生成报告

  • run.exe

 

 to be continued...

标签:exe,Selenium,py,driver,yaml,print,import,login,打包
来源: https://www.cnblogs.com/TSmagic/p/16662125.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有