美文网首页
Page Object设计模式登陆QQ空间实例

Page Object设计模式登陆QQ空间实例

作者: Root_123 | 来源:发表于2018-08-22 11:19 被阅读101次

    一、Page Object

    它是自动化测试开发实践的最佳设计模式,主要体现在对界面交互细节的封装。

    二、这种设计模式的好处

    1,可以分层设计,不同层关心不同的问题。
    第一层是页面基础操作层,即新建一个Page类。
    第二层是对象层,即设计一个LoginPage类继承Page类。
    第三层创建test_user_login函数,将单个元素操作组成一个完整的动作,设计username,password等参数。
    第四层也是main函数,传递参数,实现登陆。
    2,减少代码的重复
    3,提高测试用例的可维护性和可读性

    三、用PO设计模式登陆QQ空间

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from time import sleep
    
    
    class Page(object):
        """基础类,固定套路,用于所以页面对象类继承"""
        login_url = 'https://i.qq.com'
    
        def __init__(self, selenium_driver, base_url=login_url):
            self.base_url = base_url
            self.driver = selenium_driver
            self.timeout = 30
    
        def on_page(self):
            return self.driver.current_url == (self.base_url + self.url)
    
        def _open(self, url):
            url = self.base_url + url
            self.driver.get(url)
            assert self.on_page(), 'did not land on %s' % url
    
        def open(self):
            self._open(self.url)
    
        def find_element(self, *loc):
            return self.driver.find_element(*loc)
    
    
    class LoginPage(Page):
        """登录页面模型"""
        url = '/'
        # 定位器
        username_loc = (By.ID, 'u')
        password_loc = (By.ID, 'p')
        submit_loc = (By.ID, 'login_button')
    
        def type_username(self, username):
            self.find_element(*self.username_loc).send_keys(username)
    
        def type_password(self, password):
            self.find_element(*self.password_loc).send_keys(password)
    
        def type_submit(self):
            self.find_element(*self.submit_loc).click()
    
    
    def test_user_login(driver, username, password):
        """测试获取的用户名、密码是否可以登录成功"""
        login_page = LoginPage(driver)
        login_page.open()
        driver.maximize_window()
        driver.switch_to_frame('login_frame')
        driver.find_element_by_id("switcher_plogin").click()
        login_page.type_username(username)
        login_page.type_password(password)
        login_page.type_submit()
    
    
    def main():
        driver = webdriver.Firefox()
        username = '33833838'  # 调试的时候需要换成对应的QQ号
        password = '123456'  # 需要换成对应的密码
        test_user_login(driver, username, password)
        sleep(3)
    
        driver.close()
    
    
    if __name__ == '__main__':
        main()
    

    相关文章

      网友评论

          本文标题:Page Object设计模式登陆QQ空间实例

          本文链接:https://www.haomeiwen.com/subject/yrveiftx.html