selenium 数据驱动框架自动化从0到1--4

本文是selenium数据驱动框架系列的第四篇,介绍如何将页面元素表达式移出代码,存入配置文件,并创建常量文件及解析工具,以实现页面变动时的代码维护简化。
摘要由CSDN通过智能技术生成

selenium 数据驱动框架自动化从0到1–4

前几篇我们把模块都封装了,但还是没有实现页面元素表达式和代码完全分离,如果页面有改动,我们需要花大量时间来维护,于是这篇我们把页面元素表达式提取出来放在一个配置文件里。


在config包下创建一个test_page_expression.ini 配置文件。文件内容如下: 把所有页面的页面元素表达式都提取出来统一管理。
[login_page]   #登录页面元素表达式
#获取frame
lp_frame = xpath>//iframe[contains(@id,'x-URS-iframe')]
#获取登录名文本框
lp_user_name = xpath>//input[@name="email"]
#获取密码文本框
lp_password = xpath>//input[@name="password"]
#获取登录按钮
lp_login_button = id>dologin


[home_page]    #home页面元素表达式
#获取通信录按钮
hp_address_book =xpath>//div[text()="通讯录"]


[add_contact_person_page]    #添加联系人页面元素表达式
#获取添加联系人按钮
cp_add_contact_person_button = xpath>//span[text()="新建联系人"]
#获取添加联系人姓名文本框
cp_contact_person_name = xpath>//a[@title="编辑详细姓名"]/preceding-sibling::div/input
#获取添加联系人电子邮件文本框
cp_contact_person_email = xpath>//div[@id="iaddress_MAIL_wrap"]//dd/div//input
#获取是否是星标朋友按钮
cp_is_star = xpath>//span[text()="设为星标联系人"]/preceding-sibling::span/b
#获取联系人电话文本框
cp_contact_person_phon = xpath>//div[@id="iaddress_TEL_wrap"]//dd/div//input
#获取联系人备注文本框
cp_contact_person_coment =xpath>//textarea[@id="input_DETAIL"]
#获取保存按钮
cp_contact_person_save_button = xpath>//span[text()="确 定"]

有了配置,我们还得有地址,地址是常量,所以我们重新在config下创建一个常量文件var_config_path.py,代码如下:

#encoding = utf-8

import os

#获取当前文件的绝对路径的上层文件路径的上层文件路径
parent_path =os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(parent_path)

#获取配置文件的绝对路径
test_page_expression_path = os.path.join(parent_path,'config\\test_page_expression.ini')
print(test_page_expression_path)



有了文件,有了地址,我们还得把文件内容读取出来,于是就有了解析文件工具,在util包下创建一个config_file_parse.py 文件的解析工具,代码如下,以后工程可直接用

#encoding = utf-8

from Configparser import ConfigParser     #导入配置文件解析包
from config.var_config_path import test_page_expression_path  #导入文件地址

class ConfigParseFile(object):
    def __init__(self):
        self.cp = ConfigParser()   #创建文件解析实例
        self.cp.read(test_page_expression_path,encoding = 'utf-8')  #读文件内容

    def get_items_section(self,sectionName):
        # 获取配置文件中指定section下的所有option键值对,以字典的方式返回
        '''
        使用self.cp.items(sectionName)方法获取的配置文件中的option内容均被转换成小写
        例如:loginPage.frame 被转换成了loginpage.frame
        '''
        options = dict(self.cp.items(sectionName))
        return options

    def get_option_value(self,sectionName,optionName):
        # 获取指定section下的指定option的值
        value = self.cp.get(sectionName,optionName)
        return value

if __name__ == '__main__':
    pc = ConfigParseFile()
    print(pc.get_items_section('login_page'))
    print(pc.get_option_value('login_page','lp_frame'))
    print(pc.get_option_value('login_page', 'lp_user_name'))
    print(pc.get_option_value('login_page', 'lp_password'))
    print(pc.get_option_value('login_page', 'lp_login_button'))


总结

现在元素表达式提取出来了,但还没应用,于是要修改前面我们写的涉及表达式这块的3个页面代码。下篇我们继续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值