Selenium3与Python3实战 Web自动化测试框架

Posted 付俊捷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium3与Python3实战 Web自动化测试框架相关的知识,希望对你有一定的参考价值。

 po模型 + 数据驱动 ,完整代码

1、setting.py:

import os



base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 项目首路径
codeerror_path = os.path.join(base_dir,Image,codeerror.png)  # 验证码错误图片路径
code_path = os.path.join(base_dir,Image,code.png)  # 验证码图片保存路径
config_ini_dir = os.path.join(base_dir,setting_conf,localElement.ini)  # localElement.ini 配置文件路径
report_path = os.path.join(base_dir,report,first_case.html)  # 测试报告路径
excel_default_path = os.path.join(base_dir,ex_data,casedata.xls)  # excel表默认路径
excel_keyword_path = os.path.join(base_dir,ex_data,keyword.xls)  # excel表默认路径

setting.py

 

 

2、config.py:配置文件,主要用于配送web定位元素

[RegisterElement]
user_email=id>register_email
user_email_error=id>register_email-error
user_name=id>register_nickname
user_name_error=id>register_nickname-error
password=id>register_password
password_error=id>register_password-error
code_image=id>getcode_num
code_text=id>captcha_code
code_text_error=id>captcha_code-error
register_button=id>register-btn

 

3、read.ini:读取config.py配置文件信息,获取value

import os



base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 项目首路径
codeerror_path = os.path.join(base_dir,‘Image‘,‘codeerror.png‘)  # 验证码错误图片路径
code_path = os.path.join(base_dir,‘Image‘,‘code.png‘)  # 验证码图片保存路径
config_ini_dir = os.path.join(base_dir,‘setting_conf‘,‘localElement.ini‘)  # localElement.ini 配置文件路径
report_path = os.path.join(base_dir,‘report‘,‘first_case.html‘)  # 测试报告路径
excel_default_path = os.path.join(base_dir,‘ex_data‘,‘casedata.xls‘)  # excel表默认路径
excel_keyword_path = os.path.join(base_dir,‘ex_data‘,‘keyword.xls‘)  # excel表默认路径

setting.py

  

 

4、PO模型实现,将数据、业务、操作等分类开

4.1、find_element.py:查找目标元素,定位目标位置

技术图片 find_element.py

 

4.2、register_page.py :操作find_element.py,获取各目标元素位置

技术图片 register_page.py

 

4.3、register_handle.py :操作register_page.py ,获取目标位置后,输入需求数据

 4.3.1、get_code_value.py:解析验证码图片,获取验证码内容

技术图片 get_code_value.py
技术图片 register_handle.py

 

4.4、register_business.py:

技术图片 register_business.py

 

4.5、first_ddt_case.py:数据驱动

技术图片 first_ddt_case.py

 

附例:关键字驱动

技术图片
技术图片
from util.excel_cell_value import Get_Cells_Value
from keyword_model.actionMethod import ActionMethod
from setting_conf import setting

class KeywordCase(object):
    def __init__(self):
        self.action_metood = ActionMethod()
        excel_default_path = setting.excel_keyword_path
        self.get_cell_value = Get_Cells_Value(excel_default_path)  # 实例化


    def run_main(self):
        get_lines = self.get_cell_value.get_lines  # 获取行数
        if get_lines:
            for i in  range(1,get_lines):
                is_run = self.get_cell_value.get_is_run(i)
                if is_run == ‘yes‘:
                    carry_method = self.get_cell_value.get_action_method(i)  # 获取执行方法
                    send_value = self.get_cell_value.get_send_value(i)  # 获取输入的数据
                    oper_element = self.get_cell_value.get_oper_element(i)  # 获取操作的元素
                    expect_result_mothod = self.get_cell_value.get_expect_result(i)  # 获取预期结果
                    real_result_value = self.get_cell_value.get_real_result(i)  # 获取表中实际要求结果值
                    self.run_method(carry_method,send_value,oper_element)  # 执行excel表中对应指定的方法

                    if expect_result_mothod != ‘‘: # 预期结果有值
                        result_value = self.get_real_result_value(real_result_value)
                        if result_value[0] == ‘text‘:  # url访问,获取网页title
                            result = self.run_method(expect_result_mothod) # expect_result_mothod:driver.get_title()方法
                            if result_value[1] in result:  # 判断实际要求结果值是否存在于实际测试结果中
                                self.get_cell_value.write_cell_value(i,‘pass‘) # 在excel表中对应单元格写入数据
                            else:
                                self.get_cell_value.write_cell_value(i,‘fail‘)
                        elif result_value[0] == ‘element‘: # 获取元素,判断输入格式等
                            result = self.run_method(expect_result_mothod,result_value[1]) # expect_result_mothod:get_element()方法,result_value[1]:参数
                            if result: # 有值,表示找到对应(如:password_error)错误信息,表示格式测试通过(目的就是测试输入错误格式是否会被检查出来)
                                self.get_cell_value.write_cell_value(i,‘pass‘)
                            else:
                                self.get_cell_value.write_cell_value(i,‘fail‘)
                        else:
                            print("Error:实际要求结果:{},测试无效".format(real_result_value))
                    else:
                        print(‘第i条case:预期结果为空‘)


    def run_method(self,method,send_value = ‘‘,handle_value = ‘‘):
        main_method = getattr(self.action_metood,method)
        if send_value == ‘‘ and handle_value == ‘‘:
            result = main_method()  # 关闭浏览器、等待等
        elif send_value == ‘‘ and handle_value != ‘‘:
            result = main_method(handle_value)  # 打开浏览器、访问url等
        elif send_value != ‘‘ and handle_value == ‘‘:
            result = main_method(send_value)  # 暂时没用到
        else:
            result = main_method(send_value,handle_value) # 输入用户信息
        return result

    # 对实际要求结果值进行切分(实际要求结果形似:text=注册)
    def get_real_result_value(self, data):
        return data.split(‘=‘)





if __name__ == "__main__":
    keyword_case = KeywordCase()
    keyword_case.run_main()
技术图片

 

以上是关于Selenium3与Python3实战 Web自动化测试框架的主要内容,如果未能解决你的问题,请参考以下文章

Selenium3与Python3实战 Web自动化测试框架

Selenium3与Python3实战 Web自动化测试框架

Selenium3与Python3实战 Web自动化测试框架

Selenium3 Python3 Web自动化测试从基础到项目实战之二浏览器的不同设置

python3.6+selenium3.13 自动化测试项目实战一

selenium3 web自动化测试框架 三:Unittest介绍及项目实战中的运用