多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Python3+Selenium3+Unittest登录验证实战

更新时间:2022-06-13 09:30:07 作者:多测师 浏览:49

  Python3+Selenium3+Unittest 登录验证实战:

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)

  以上内容为大家介绍了自动化测试中的Python3+Selenium3+Unittest登录验证实战,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部