Python3+Selenium3+Unittest 登录验证实战百度网盘地址: https://pan.baidu.com/s/1Np8lglOdOAqcpnREtSL0Zw 密码:f9mj
Python3+Selenium3+Unittest 登录验证实战: · 自动化脚本中添加俩个文件 一个为PageWeb 一个ChanDaoLogin · PageWeb文件夹下创建脚本文件PageObject.py文件 · ChanDaoLogin文件夹下创建脚本文件ChanDaoLogin_page.py
PageObject.py代码如下: from selenium import webdriver #导入需要的
selenium from os import path #导入文件处理的包 from selenium.webdriver.common.keys import Keys #导入键盘操作的包 from selenium.webdriver.common.action_chains import ActionChains #导入鼠标操作的包 **#创建界面元素操作公共类** ```bash class Page_Object: #写一个构造函数,有一个参数driver 初始化webdirver驱动 def __init__(self,driver): self.driver=driver # 编写元素定位方法,多种元素定位进行统一处理 def find_element(self, key, value): if key == 'id': return self.driver.find_element_by_id(value) elif key == 'class': return self.driver.find_element_by_class_name(value) elif key == 'name': return self.driver.find_element_by_name(value) elif key == 'tag': return self.driver.find_element_by_tag_name(value) elif key == 'linkText': return self.driver.find_element_by_link_text(value) elif key == 'cssSelector': return self.driver.find_element_by_css_selector(value) elif key == 'xpath': return self.driver.find_element_by_xpath(value) else: print('未找到需要定位的页面元素') #打开需要进行
测试的url地址 def open_url(self,url): self.driver.get(url) #浏览器页面最大化 def max_window_page(self): self.driver.maximize_window() #关闭
浏览器页面 def exit_page(self): self.driver.quit() #控制浏览器前进 def forward_page(self): self.driver.forward() #控制浏览器后退 def back_page(self): self.driver.back() #清除定位的文本框内容 def clear_textbox(self,key,value): self.find_element(key, value).clear() #向定位到的文本框输入内容 def write_textbox(self,key,value,keys): self.find_element(key, value).send_keys(keys) #进行键盘回车操作 def enter(self,key,value): self.find_element( key, value).send_keys(Keys.ENTER) #进行键盘复制操作 def enter_control_c(self,key,value): self.find_element( key, value).send_keys(Keys.CONTROL,'c') #进行键盘粘贴操作 def enter_control_v(self,key,value): self.find_element(key, value).send_keys(Keys.CONTROL,'v') #进行键盘添加空格操作 def enter_space(self,key,value): self.find_element(key, value).send_keys(Keys.SPACE) # 进行键盘删除字符操作 def enter_back_space_textbox(self, key, value): self.find_element(key, value).send_keys(Keys.BACK_SPACE) #进行鼠标点击操作 def click(self,key,value): self.find_element(key, value).click() #通过js代码设置滚动条,进行滚动操作 def gundongtiao(self): self.driver.execute_script("window.scrollTo(400,800)") #进行页面截图操作 def get_image(self,ImagePath): self.driver.get_screenshot_as_file(ImagePath) #获取元素标题 def get_title(self): self.driver.title #获取url地址 def get_url(self): self.driver.current_url #获取输入文本框大小 def get_size(self): self.driver.size #判断元素是否存在 def get_dispaay(self,key,value): self.find_element(key,value).is_displayed()
ChanDaoLogin_page.py代码如下:
# * coding: utf-8 * #导入页面封装好的操作类 from selenium import webdriver #导入selenium包 from PageWeb.PageObject import Page_Object #导入页面操作类 from time import sleep #导入time sleep单位为秒 import unittest #导入unittest包 #该Login类继承页面类Page_Object class Login(unittest.TestCase): #unittest初始化函数 def setUp(cls): cls.driver=webdriver.Chrome() #创建浏览器驱动 cls.PO=Page_Object(cls.driver) #向Page_Object传入driver驱动 cls.PO.max_window_page() #浏览器最大化 cls.PO.open_url('http://127.0.0.1/zentao/user-login.html') sleep(2) #设置等待时间 #禅道登录成功 def test_chandao_success(self): self.PO.find_element('id','account').send_keys('admin') sleep(1) self.PO.find_element('name','password').send_keys('123456') sleep(1) self.PO.click('id','submit') sleep(1) user=self.driver.find_element_by_xpath('//*[@id="userMenu"]/a').text self.assertEqual(user,'admin') #用户名输入错误 def test_username_error_(self): self.PO.find_element('id', 'account').send_keys('admin1') sleep(1) self.PO.find_element('name', 'password').send_keys('123456') sleep(1) self.PO.click('id', 'submit') sleep(1) name=self.driver.switch_to.alert.text self.assertEqual(name,'登录失败,请检查您的用户名或密码是否填写正确。') #密码输入错误 def test_password_error(self): self.PO.find_element('id', 'account').send_keys('admin') sleep(1) self.PO.find_element('name', 'password').send_keys('12345') sleep(1) self.PO.click('id', 'submit') sleep(1) name = self.driver.switch_to.alert.text self.assertEqual(name, '登录失败,请检查您的用户名或密码是否填写正确。') #用户名,密码输入为空 def test_null_ereor(self): self.PO.find_element('id', 'account').send_keys('') sleep(1) self.PO.find_element('name', 'password').send_keys('') sleep(1) self.PO.click('id', 'submit') sleep(1) name = self.driver.switch_to.alert.text self.assertEqual(name, '登录失败,请检查您的用户名或密码是否填写正确。') #unittest结束函数 @classmethod def tearDown(cls): cls.driver.quit() if __name__ == '__main__': unittest.main(verbosity=2)
测试结果如下:
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
来这里,成为51Testing签约原创作者!