标签: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文件已经要在同一个文件夹下
这样的话就实现了封装和调用。
以上如果有问题欢迎随时沟通和讨论!
转载请告知!谢谢!
标签:name sleep comm form utf-8 coding mon __name__ sel
原文地址:https://www.cnblogs.com/gengwulovestudy/p/13495442.html