• object设计模式.py


    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from time import sleep
    #创建page类:
    class Page(object):
    """
    基础类、用于页面对象类的继承
    """
    login_url = "http://www.126.com"
    def __init__(self,selenium_driver,base_url = login_url):
    """
    首先创建一个基础类Page,在初始化方法init)中定义驱动(driver)、基本的URL
    (base_url)和超时时间(timeout)等。
    :param selenium_driver:
    :param base_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)

    """
    定义open)方法用于打开URL网站,但它本身并未做这件事情,而是交由_open)方法来实现。关于URL地址的断言部分,则交由on page()方法来实现,而find_element)方法用于元素的定位。
    """

    #创建LoginPage类:
    class LoginPage(Page):
    """
    126邮箱登录页面模型
    LoginPage类中主要对登录页面上的元素进行封装,使其成为更具体的操作方法。例如,用户名、密码和登录按钮都被封装成了方法。
    """
    url = "/"
    #定位器
    username_loc = (By.ID,"idInput")
    password_loc = (By.ID,"pwdInput")
    submit_loc = (By.ID,"loginBtn")
    #Action
    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 submit(self):
    self.find_element(*self.submit_loc).click()

    def test_user_login(driver,username,password):
    """
    测试获取的用户名/密码是否可以登录
    test_user_login)函数将单个的元素操作组成一个完整的动作,而这个动作包含了打开浏览器、输入用户名/密码、点击登录等单步操作。在使用该函数时需要将driver、username、password等信息作为函数的入参,这样该函数具有很强的可重用性。
    :param driver:
    :param username:
    :param password:
    :return:
    """
    login_page = LoginPage(driver)
    login_page.open()
    login_page.type_username(username)
    login_page.type_password(password)
    login_page.submit()

    def main():
    try:
    driver = webdriver.Firefox()
    username = "username"
    password = "123456"
    test_user_login(driver,username,password)
    sleep(3)
    text = driver.find_element_by_xpath("//span[@id='spnUid']").text
    assert (text == "username@126.com") #用户名称不匹配、登录失败!
    finally:
    #关闭浏览器窗口:
    driver.close()

    if __name__ == '__main__':
    main()
  • 相关阅读:
    关于Animator状态在运行时的正负方向播放
    测试-Animator的“当前剪辑CurrentAnimatorStateInfo”
    关于Unity实现游戏录制功能的思考
    关于UI功能解锁,UI特效动画,UI tips的再思考
    堆排序
    单元测试时使用Ninject的小问题
    又开一坑,运动图形MoGraph for Unity
    关于AnimationState的测试
    底层设计应该尽量避免泛型
    java8中计算两个日期时间LocalDateTime的时间差,格式化成xx年yy月zz日aa时bb分cc秒
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12210535.html
Copyright © 2020-2023  润新知