Python3+Selenium3+Unittest 登录验证实战

Python3+Selenium3+Unittest 登录验证实战

Python3+Selenium3+Unittest 登录验证实战百度网盘地址:
https://pan.baidu.com/s/1Np8lglOdOAqcpnREtSL0Zw 密码:f9mj

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

自动化脚本中添加俩个文件 一个为PageWeb 一个ChanDaoLogin
PageWeb文件夹下创建脚本文件PageObject.py文件
ChanDaoLogin文件夹下创建脚本文件ChanDaoLogin_page.py

Python3+Selenium3+Unittest 登录验证实战_第1张图片
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 登录验证实战_第2张图片

Python3+Selenium3+Unittest 登录验证实战_第3张图片

你可能感兴趣的:(Python3+Selenium3+Unittest 登录验证实战)