模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了。 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。 装载数据的方式可以是列表、字典或是外部文件(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('https://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!