51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1085|回复: 0
打印 上一主题 下一主题

[转贴] Python3+Selenium3+Unittest 登录验证实战

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-3-7 11:16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          Python3+Selenium3+Unittest 登录验证实战[url=]百度[/url]网盘地址:
      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   #导入需要的[url=]selenium[/url]
      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)



      测试结果如下:


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 02:35 , Processed in 0.067266 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表