Python3+Selenium3+Unittest 登录验证实战(图)

测试工具 创建于:2022-02-09
  
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签约原创作者!

原文地址:http://www.51testing.com/?action-viewnews-itemid-4481163

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

发表于:2022-2-09 09:23 作者:爱测试的小浩 来源:CSDN