肖sir__ python自动化之selenium 封装(9.2)
python自动化之selenium
一、自动化用例
案例:
用例1cms环境 登录
1 2 3 4 5 6 7 8 9 | from selenium import webdriver from selenium.webdriver.support.select import Select from time import * dx = webdriver.Chrome() dx.get( "http://cms.duoceshi.cn/manage/login.do" ) dx.find_element_by_name( "userAccount" ).send_keys( "admin" ) dx.find_element_by_name( "loginPwd" ).send_keys( "123456" ) sleep( 2 ) dx.find_element_by_xpath( '//*[@id="loginBtn"]' ).click() |
用例2: cms环境中登录--退出
1 2 3 4 5 6 7 8 9 | from selenium import webdriver from selenium.webdriver.support.select import Select from time import * dx = webdriver.Chrome() dx.get( "http://cms.duoceshi.cn/manage/login.do" ) dx.find_element_by_name( "userAccount" ).send_keys( "admin" ) dx.find_element_by_name( "loginPwd" ).send_keys( "123456" ) sleep( 2 ) dx.find_element_by_xpath( '//*[@id="loginBtn"]' ).click()<br> |
用例3:cms 登录--系统管理--退出 流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from selenium import webdriver from time import * dx = webdriver.Chrome() dx.get( "http://cms.duoceshi.cn/manage/login.do" ) dx.find_element_by_name( "userAccount" ).send_keys( "admin" ) dx.find_element_by_name( "loginPwd" ).send_keys( "123456" ) sleep( 2 ) dx.find_element_by_xpath( "html/body/div/div/form/div[3]/label/input" ).click() sleep( 2 ) dx.find_element_by_xpath( "html/body/div/div/form/div[4]/input[1]" ).click() dx.maximize_window() sleep( 2 ) dx.find_element_by_xpath( '//*[@id="menu-system"]/dt' ).click() sleep( 3 ) dx.find_element_by_link_text( "退出" ).click() |
==========================================================
二、将三条用例写入到一个类中管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from selenium import webdriver from time import sleep class cms( object ): def __init__( self ): pass def dl( self ): self .dx = webdriver.Chrome() self .dx.get( "http://cms.duoceshi.cn/manage/login.do" ) self .dx.find_element_by_name( "userAccount" ).send_keys( "admin" ) self .dx.find_element_by_name( "loginPwd" ).send_keys( "123456" ) self .dx.find_element_by_xpath( '//*[@id="loginBtn"]' ).click() def xtgl( self ): dx = webdriver.Chrome() dx.get( "http://cms.duoceshi.cn/manage/login.do" ) dx.find_element_by_name( "userAccount" ).send_keys( "admin" ) dx.find_element_by_name( "loginPwd" ).send_keys( "123456" ) sleep( 2 ) dx.find_element_by_xpath( "html/body/div/div/form/div[3]/label/input" ).click() sleep( 2 ) dx.find_element_by_xpath( "html/body/div/div/form/div[4]/input[1]" ).click() dx.maximize_window() sleep( 2 ) dx.find_element_by_xpath( '//*[@id="menu-system"]/dt' ).click() sleep( 3 ) dx.find_element_by_link_text( "退出" ).click() def tc( self ): dx = webdriver.Chrome() dx.get( "http://cms.duoceshi.cn/manage/login.do" ) dx.find_element_by_name( "userAccount" ).send_keys( "admin" ) dx.find_element_by_name( "loginPwd" ).send_keys( "123456" ) sleep( 2 ) dx.find_element_by_xpath( "html/body/div/div/form/div[3]/label/input" ).click() sleep( 2 ) dx.find_element_by_xpath( "html/body/div/div/form/div[4]/input[1]" ).click() dx.maximize_window() dx.find_element_by_link_text( "退出" ).click() if __name__ = = '__main__' : d = cms() # d.dl() # d.tc() # d.xtgl()<br><br>写在一个类的用例,代码有冗余部分,我们需要优化from selenium import webdriver<br>from time import sleep<br>class cms(object):<br> def __init__(self):<br> self.dx = webdriver.Chrome()<br> self.dx.get("http://cms.duoceshi.cn/manage/login.do")<br> self.dx.maximize_window()<br> self.dx.implicitly_wait(3)<br> def dl(self):<br> self.dx.find_element_by_name("userAccount").send_keys("admin")<br> self.dx.find_element_by_name("loginPwd").send_keys("123456")<br> self.dx.find_element_by_xpath('//*[@id="loginBtn"]').click()<br> def xtgl(self):<br> self.dl( ) #先调用登录用例<br> sleep(2)<br> self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt').click()# 点击系统管理<br> sleep(3)<br> self.dx.find_element_by_link_text("退出").click() #点击退出<br><br> def tc(self):<br> self.dl()# 先调用登录用例<br> sleep(3)<br> self.dx.find_element_by_link_text("退出").click() #点击退出<br>if __name__ == '__main__':<br> d=cms()<br> # d.dl()<br> # d.tc()<br> d.xtgl()在封装的过程将登录的账号设置成变量:from selenium import webdriver<br>from time import sleep<br>class cms(object):<br> def __init__(self):<br> self.dx = webdriver.Chrome()<br> self.dx.get("http://cms.duoceshi.cn/manage/login.do")<br> self.dx.maximize_window()<br> self.dx.implicitly_wait(3)<br> def dl(self,name,pwd):<br> self.dx.find_element_by_name("userAccount").send_keys(name)<br> self.dx.find_element_by_name("loginPwd").send_keys(pwd)<br> self.dx.find_element_by_xpath('//*[@id="loginBtn"]').click()<br> def xtgl(self,name,pwd):<br> self.dl(name,pwd) #先调用登录用例<br> sleep(2)<br> self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt').click()# 点击系统管理<br> sleep(3)<br> self.dx.find_element_by_link_text("退出").click() #点击退出<br><br> def tc(self,name,pwd):<br> self.dl(name,pwd)# 先调用登录用例<br> sleep(3)<br> self.dx.find_element_by_link_text("退出").click() #点击退出<br>if __name__ == '__main__':<br> d=cms() #创建cms类的对象d<br> # d.dl("admin","123456") #通过对象调用登录<br> # d.tc("admin","123456") #通过对象调用退出<br> d.xtgl("admin","123456")#通过对象调用系统管理在封装好的代码中进行断言:if断言、assert 断言from selenium import webdriver<br>from time import sleep<br>class cms(object):<br> def __init__(self):<br> self.dx = webdriver.Chrome()<br> self.dx.get("http://cms.duoceshi.cn/manage/login.do")<br> self.dx.maximize_window()<br> self.dx.implicitly_wait(3)<br> def dl(self,name,pwd):<br> self.dx.find_element_by_name("userAccount").send_keys(name)<br> self.dx.find_element_by_name("loginPwd").send_keys(pwd)<br> self.dx.find_element_by_xpath('//*[@id="loginBtn"]').click()<br> print(self.dx.title)<br> t=self.dx.title<br> assert t=="过期更新"<br> # if t=="过期更新":<br> # print("ok")<br> # else:<br> # print("no")<br> def xtgl(self,name,pwd):<br> self.dl(name,pwd) #先调用登录用例<br> sleep(2)<br> self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt').click()# 点击系统管理<br> sleep(3)<br> self.dx.find_element_by_link_text("退出").click() #点击退出<br><br> def tc(self,name,pwd):<br> self.dl(name,pwd)# 先调用登录用例<br> sleep(3)<br> self.dx.find_element_by_link_text("退出").click() #点击退出<br>if __name__ == '__main__':<br> d=cms() #创建cms类的对象d<br> d.dl("admin","123456") #通过对象调用登录<br> # d.tc("admin","123456") #通过对象调用退出<br> # d.xtgl("admin","123456")#通过对象调用系统管理<br><br>案例:from selenium import webdriver<br>import time<br>class cms(object):<br> dx = webdriver.Chrome()<br> def __init__(self):<br> pass<br> def dl(self):<br> self.dx.get('http://cms.duoceshi.cn/manage/login.do')<br> time.sleep(1)<br> self.dx.maximize_window()<br> # 用户名、密码、勾选、登陆<br> time.sleep(1)<br> self.dx.find_element_by_id('userAccount').send_keys('admin')<br> time.sleep(1)<br> self.dx.find_element_by_id('loginPwd').send_keys('123456')<br> time.sleep(1)<br> self.dx.find_element_by_id('online').click()<br> time.sleep(1)<br> self.dx.find_element_by_id('loginBtn').click()<br> time.sleep(1)<br> def yfzx(self):<br> self.dl()<br> self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt').click()<br> time.sleep(1)<br> self.dx.find_element_by_link_text('用户管理').click()<br> time.sleep(1)<br> def yftj(self):<br> self.yfzx()<br> ifk = self.dx.find_element_by_xpath('//*[@id="iframe_box"]/div[2]/iframe')<br> self.dx.switch_to.frame(ifk) # 进入框<br> self.dx.find_element_by_xpath('/html/body/div/div[2]/span[1]/a[2]').click()<br> # 用户姓名、性别、手机、邮箱、登陆账号、登陆密码、确认密码、确认<br> ifk2 = self.dx.find_element_by_xpath('//*[@id="xubox_iframe1"]')<br> self.dx.switch_to.frame(ifk2) # 进入框<br> self.dx.find_element_by_xpath('//*[@id="userName"]').send_keys('zn')<br> self.dx.find_element_by_xpath('//*[@id="sysUserForm"]/table/tbody/tr[2]/td/label[2]').click()<br> self.dx.find_element_by_xpath('//*[@id="user-tel"]').send_keys('18200001000')<br> self.dx.find_element_by_xpath('//*[@id="user-email"]').send_keys('1820000100@qq.com')<br> self.dx.find_element_by_xpath('//*[@id="userAccount"]').send_keys('zn')<br> self.dx.find_element_by_xpath('//*[@id="loginPwd"]').send_keys('123456')<br> self.dx.find_element_by_xpath('//*[@id="confirmPwd"]').send_keys('123456')<br> time.sleep(5)<br> self.dx.find_element_by_xpath('//*[@id="submitBtn"]').click()<br> self.dx.switch_to.default_content() # 退出框<br> # 根据用户名称-搜索-删除-确认删除<br> self.dx.switch_to.frame(ifk) # 进入框<br> time.sleep(2)<br> self.dx.find_element_by_xpath('//*[@id="searchValue"]').send_keys('zn')<br> time.sleep(1)<br> self.dx.find_element_by_xpath('//*[@id="searchBtn"]').click()<br>if __name__ == '__main__':<br> dx=cms()<br> # dx.dl()<br> # dx.yfzx()<br> dx.yftj()<br><br> |
分类:
教学笔记 / 教学笔记二
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!