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

这篇博客继续上一篇的selenium数据驱动框架自动化,主要封装了登陆后页面及添加联系人页面的元素代码,并在app_models包下创建了相应行动代码。尽管已进行了初步模块封装,但为便于管理和应对开发变动,下一步将实现页面元素表达式与代码的分离。
摘要由CSDN通过智能技术生成

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

上一篇我们没有把链路上的页面封装完,这篇继续封装,上一篇封装后的代码如下:

#encoding = utf-8

from app_models.login_action import *
from util.open_browser import *

#创建chrome浏览器实例
driver = OpenBrowser()
lg = LoginAction()
lg.login(driver,'abc_123456qwe','abc_123456')

#获取通讯录按钮单击
get_element(driver,'xpath','//div[text()="通讯录"]').click()
#获取新建联系人按钮单击
sleep(3)
get_element(driver,'xpath','//span[text()="新建联系人"]').click()
#获取姓名输入框
sleep(3)
name = get_element(driver,'xpath',"//a[@title ='编辑详细姓名']/preceding-sibling::div/input")
#输入框输入名字
name.send_keys('我是谁')
#获取电子邮箱输入框
sleep(3)
email = get_element(driver,'xpath','//div[@id="iaddress_MAIL_wrap"]//dd//div//input')
#电子邮箱输入
email.send_keys('1322432@126.com')
#获取是否是星标朋友单击
sleep(3)
get_element(driver,'xpath','//span[text()="设为星标联系人"]/preceding-sibling::span/b').click()
#获取电话号码输入框
sleep(3)
phon = get_element(driver,'xpath','//div[@id="iaddress_TEL_wrap"]//dd//div//input')
#输入电话号码
phon.send_keys('13523232323')
#获取备注输入框输入备注
sleep(3)
common = get_element(driver,'xpath',"//textarea[@id='input_DETAIL']").send_keys('测试验证')
#获取确定按钮单击保存
sleep(3)
buton = get_element(driver,'xpath','//span[text()="确 定"]').click()
#断言我是谁是否添加成功
sleep(10)
assert u'我是谁' in driver.page_source
print('添加联系人成功')
#退出浏览器
driver.quit()




二,封装登陆后页面元素代码

1,在page_objects包下创建一个home_page.py 文件,代码如下:

#encoding = utf-8

from util.get_object_map import *

class HomePage(object):
    def __init__(self,driver):
        self.driver = driver

    def  address_book(self):
        try:
            #获取通讯录按钮元素对象
            element = get_element(self.driver,'xpath','//div[text()="通讯录"]')
            return element
        except Exception as e:
            raise e

if __name__ =='__main__':
    from util.open_browser import *
    from app_models.login_action import LoginAction
    driver = OpenBrowser()   #创建浏览器实例
    lg=LoginAction()    #创建登录页面实例
    lg.login(driver,'abc_123456qwe','abc_123456')  #登录
    hg = HomePage(driver)  #创建home 页面实例
    hg.address_book().click() #点击通讯录按钮
    driver.quit()  #退出


三,封装添加联系人页面元素代码

1,在page_objects包下创建一个add_contact_person_page.py 文件,代码如下:

#encoding = utf-8

from util.get_object_map import *

class AddContactPensonPage(object):
    def __init__(self,driver):
        self.driver = driver

    def add_contact_person_button(self):
        try:
            #获取添加联系人按钮元素对象返回给调用者
            element = get_element(self.driver,'xpath','//span[text()="新建联系人"]')
            return element
        except Exception as e:
            raise e

    def user_name(self):
        try:
            #获取新建联系人姓名元素对象返回给调用者
            element = get_element(self.driver,'xpath','//a[@title="编辑详细姓名"]/preceding-sibling::div/input')
            return element
        except Exception as e:
            raise e

    def user_person_email(self):
        try:
            #获取新建联系人电子邮箱元素对象返回给调用者
            element = get_element(self.driver,'xpath','//div[@id="iaddress_MAIL_wrap"]//dd/div//input')
            return element
        except Exception as e:
            raise e

    def is_star(self):
        try:
            #获取是否是星标朋友的元素对象返回给调用者
            element = get_element(self.driver,'xpath','//span[text()="设为星标联系人"]/preceding-sibling::span/b')
            return element
        except Exception as e:
            raise e

    def user_person_phon(self):
        try:
            #获取联系人手机号码元素对象返回给调用者
            element = get_element(self.driver,'xpath','//div[@id="iaddress_TEL_wrap"]//dd/div//input')
            return element
        except Exception as e:
            raise e

    def user_person_comment(self):
        try:
            #获取备注元素对象返回给调用者
            element = get_element(self.driver,'xpath','//textarea[@id="input_DETAIL"]')
            return element
        except Exception as e:
            raise e

    def save_button(self):
        try:
            #获取确定按钮元素对象返回给调用者
            element = get_element(self.driver,'xpath','//span[text()="确 定"]')
            return element
        except Exception as e:
            raise e

if __name__ =='__main__':
    from util.open_browser import *
    from app_models.login_action import LoginAction
    from page_objects.home_page import *
    from time import sleep
    driver = OpenBrowser()  #创建浏览器实例
    lg = LoginAction()      #创建登录页面实例
    lg.login(driver,'abc_123456qwe','abc_123456') #登录
    hg = HomePage(driver)   #创建home页面实例
    hg.address_book().click() #点击通讯录按钮
    cp=AddContactPensonPage(driver)  #创建添加联系人页面元素实例
    cp.add_contact_person_button().click()  #点击添加联系人按钮
    sleep(3)
    cp.user_name().send_keys('xinzeng')   #姓名输入
    sleep(3)
    cp.user_person_email().send_keys('14432@163.com') #电子邮箱输入
    cp.is_star().click()   #点击星标按钮
    cp.user_person_phon().send_keys('12345324323')  #输入电话
    cp.user_person_comment().send_keys('gdgfghgfh')  #输入备注
    cp.save_button().click()  #点击确定
    sleep(3)
    assert u'xinzeng' in driver.page_source  #断言xinzeng 是否添加完成
    sleep(2)
    print('断言成功')
    driver.quit()  #退出

2,在app_models包下创建一个add_contact_person_action.py 文件,封装添加联系人页面代码如下

#encoding = utf-8

from page_objects.add_contact_person_page import AddContactPensonPage
from page_objects.home_page import HomePage
import traceback
import time

class AddContactPersonAction(object):
    def __init__(self):
        print('开始添加联系人')

    @staticmethod
    def add_contact_person(driver,userName,userEmail,isStar,userPhon,userComment):
        try:
            hp = HomePage(driver)   #获取home页面元素的实例
            hp.address_book().click()  #点击通讯录按钮
            cp = AddContactPensonPage(driver)  #获取联系人页面元素实例
            cp.add_contact_person_button().click()  #点击添加联系人按钮
            time.sleep(2)
            if userName:
                cp.user_name().send_keys(userName)   #输入姓名
                cp.user_person_email().send_keys(userEmail)  #输入email
            if  isStar =='y':
                cp.is_star().click()   #判断是不是星标,是点击按钮
            if userPhon:
                cp.user_person_phon().send_keys(userPhon)  #输入电话
            if userComment:
                cp.user_person_comment().send_keys(userComment)  #输入备注
            cp.save_button().click()  #点击提交
            time.sleep(3)
            assert userName in driver.page_source  #断言添加的联系人是否添加成功
            print('断言成功')
        except Exception as e:
            print(traceback.print_exc()) #打印堆栈信息
            raise e
if __name__ =='__main__':
    from util.open_browser import *
    from app_models.login_action import *
    driver = OpenBrowser()  #实例化浏览器对象
    lg = LoginAction()  #实例化登录页面对象
    lg.login(driver,'abc_123456qwe','abc_123456')  #登录
    cp=AddContactPersonAction()  #实例化添加联系人页面
    #添加联系人
    cp.add_contact_person(driver,'sd','131243@163.com','y','12345345432','dsfds')
    print('添加联系人结束')
    #退出浏览器
    driver.quit()



总结

于是乎,上一篇的代码就变成下面这样了
是不是干净利落了,但还是没有把元素表达式,测试数据和代码分离,只是把相关模块封装了一下(初步框架),这样难于管理,如果开发稍微改动,我们就会花很多时间去修改维护,这不是我们想要的。下一篇我们先把页面元素表达式和代码分离

#encoding = utf-8

from app_models.add_contact_person_action import AddContactPersonAction
from page_objects.home_page import *
from app_models.login_action import *
from util.open_browser import *

#创建chrome浏览器实例
driver = OpenBrowser()
lg = LoginAction()   #实例化登录页面
lg.login(driver,'abc_123456qwe','abc_123456')  #登录
hp =HomePage(driver)  #实例化home页面元素
hp.address_book().click()  #点击通讯录按钮
cp = AddContactPersonAction()  #实例化添加联系人页面
cp.add_contact_person(driver,'qerrw','1323233@163.com','n','13423232323','gdgd') #添加联系人
print('添加联系人成功')
#退出浏览器
driver.quit()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值