Selenium数据驱动测试模型和实例

模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了。 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。 装载数据的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是实现数据和脚本的分离。

代码实现如下:(文章代码url地址为内部地址,我隐藏掉了,你们可以换成其他地址哦)

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/13 13:46
# @Author : Gengwu
# @FileName: LoginClass_Para.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,username,password):
        # 清除用户名的框,防止自动带入
        driver.find_element_by_id('account').clear()
        driver.find_element_by_id('account').send_keys(username)

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

        # 点击登录按钮
        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)

数据驱动调用——实现多个账户登录

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

from selenium import webdriver
from time import sleep
from LoginClass_Para import *



driver=webdriver.Chrome()
driver.get('//qa***.com/')
driver.maximize_window()
driver.implicitly_wait(10)
sleep(3)

Login().user_login(driver,'admin','admin')
sleep(3)
Login().user_logout(driver)

Login().user_login(driver,'test','123456')
sleep(3)
Login().user_logout(driver)

sleep(3)
driver.quit()

脚本放到同一个文件夹下,就可以试下调用。

以上如果有问题欢迎随时沟通和交流。

Best Regards!
Make a little progress every day!