码迷,mamicode.com
首页 > 其他好文 > 详细

Selenium模块化驱动测试介绍和实例

时间:2020-08-13 22:07:14      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:name   sleep   comm   form   utf-8   coding   mon   __name__   sel   

线性模型介绍:

线性模型虽然每个用例都可以拿来独立运行,但是用例之间重复代码多,开发、维护成本高。

其实把重复的操作代码封装成独立的公共模块,当用例执行时需要用到这部分,直接调用即可,这就是模块驱动的方式。

比如登录系统、退出系统、收藏等等。

如下实例(代码中包含我当前用的一些内部地址和账号,做了隐藏,请知悉。)

登录和注册代码如下:

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/11 9:13
# @Author : Gengwu
# @FileName: user_login.py
# @Software: PyCharm

from  selenium import  webdriver
from  time import  sleep
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.alert import  Alert

driver=webdriver.Chrome()
driver.get(https://qa-***.com/)
driver.maximize_window()

#清除用户名的框,防止自动带入
driver.find_element_by_id(account).clear()
driver.find_element_by_id(account).send_keys(admin)

#清除密码的框,防止自动带入
driver.find_element_by_id(password).clear()
driver.find_element_by_id(password).send_keys(admin)

#点击登录按钮
driver.find_element_by_css_selector(#app > div > div > div.content > form > div.login-form-button-item > button).click() #copy到selector
sleep(2)

#通过悬浮框定位到退出登录
above=driver.find_element_by_class_name(author)
ActionChains(driver).move_to_element(above).perform()
driver.find_element_by_link_text(退出登录).click()

sleep(2)
#点击弹框的确定按钮
driver.find_element_by_css_selector(.ant-modal-body .ant-btn-primary).click()
sleep(2)

driver.quit()

将登录的操作封装到login()函数中,将退出的操作封装到logout()函数中,用到时调用即可

新建:Loginclass.py

代码如下:

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/12 16:48
# @Author : Gengwu
# @FileName: LoginClass.py
# @Software: PyCharm

from  selenium import  webdriver
from  time import  sleep
from selenium.webdriver.common.action_chains import ActionChains

class Login(): #定义一个类,类下面封装两个方法,一个登录,一个退出
    def user_login(self,driver):
        # 清除用户名的框,防止自动带入
        driver.find_element_by_id(account).clear()
        driver.find_element_by_id(account).send_keys(admin)

        # 清除密码的框,防止自动带入
        driver.find_element_by_id(password).clear()
        driver.find_element_by_id(password).send_keys(admin)

        # 点击登录按钮
        driver.find_element_by_css_selector(
            #app > div > div > div.content > form > div.login-form-button-item > button).click()  # copy到selector
        sleep(2)

    def user_logout(self,driver):
        # 通过悬浮框定位到退出登录
        above = driver.find_element_by_class_name(author)
        ActionChains(driver).move_to_element(above).perform()
        driver.find_element_by_link_text(退出登录).click()

        sleep(2)
        # 点击弹框的确定按钮
        driver.find_element_by_css_selector(.ant-modal-body .ant-btn-primary).click()
        sleep(2)

if __name__==__main__: #调试
    driver = webdriver.Chrome()
    driver.get(https://qa-***.com/)
    driver.maximize_window()
    sleep(3)

    Login().user_login(driver)
    sleep(2)
    Login().user_logout(driver)
    sleep(3)

    driver.quit()
Call_login.py
# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/13 11:01
# @Author : Gengwu
# @FileName: Call_login.py
# @Software: PyCharm

from LoginClass import *
from selenium import webdriver
from time import sleep

driver=webdriver.Chrome()
driver.get(https://qa***.com/)
driver.maximize_window()
driver.implicitly_wait(10) #设置一个隐式等待时间

Login().user_login(driver)
sleep(3)
Login().user_logout(driver)
sleep(3)

driver.quit()

现在是将复用的代码独立保存,使用时导入调用即可.

三个py文件已经要在同一个文件夹下

技术图片

 

 这样的话就实现了封装和调用。

 

以上如果有问题欢迎随时沟通和讨论!

转载请告知!谢谢!

Best Regards!
Make a little progress every day!

Selenium模块化驱动测试介绍和实例

标签:name   sleep   comm   form   utf-8   coding   mon   __name__   sel   

原文地址:https://www.cnblogs.com/gengwulovestudy/p/13495442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!