zoukankan      html  css  js  c++  java
  • Selenium(Python)PageObject页面对象

    使用PageObject页面对象的好处是,

    当页面元素的位置发生改变时,

    只需要去修改Xpath或者ID,

    而不用去修改测试用例本身;

    本次的思路是:

    1、常用方法类

    2、页面对象类

    3、测试用例类

    WebDriverMethod.py:

    class SeleniumMethod(object):
    # 封装Selenium常用方法

    def __init__(self, driver):
    self.driver = driver
         # 构造函数

    def getTitle(self):
    # 获取页面标题
    return self.driver.title

    def clearAndInput(self, location, value):
    # 根据xpath定位元素并清除、输入
    element = self.driver.find_element_by_xpath(location)
    element.clear()
    element.send_keys(value)

    def click(self, location):
    # 根据xpath定位元素并点击
    return self.driver.find_element_by_xpath(location).click()

    def getText(self, location):
    # 根据xpath定位元素并获取文本值
    return self.driver.find_element_by_xpath(location).text

    BaiduHome.py:

    from WebDriverMethod import SeleniumMethod

    class BaiduPage(SeleniumMethod):
    # 百度页面对象

    inputBox = ".//*[@id='kw']"
    # 百度输入框
    searchBotton = ".//*[@id='su']"
    # 百度搜索按钮

    responseTitle = "中国_百度搜索"
    # 搜索结果页的标题
    oneResult = ".//*[@id='1']/h3/a"
    # 第一行
    oneResultText = "中国_百度百科"
    # 第一行的文本

    def searchChinese(self):
    # 搜索中国
    self.clearAndInput(self.inputBox, "中国")
    self.click(self.searchBotton)

    BaiduTest.py:

    import unittest
    from time import sleep

    from selenium import webdriver

    from BaiduHome import BaiduPage


    class MyTestCase(unittest.TestCase):

    def setUp(self):
    self.driver = webdriver.Firefox()
    self.driver.maximize_window()
    self.driver.get("https://www.baidu.com/")
         assert self.driver.title, "百度一下,你就知道"
    sleep(2)

    def test_searchChinese(self):
    # 测试用例
    homePage = BaiduPage(self.driver)
    homePage.searchChinese()
    sleep(2)
    assert homePage.getTitle(), homePage.responseTitle
    # 断言搜索结果页标题
    assert homePage.getText(homePage.oneResult), homePage.oneResultText
    # 断言搜索结果第一行的文本

    def tearDown(self):
    self.driver.close()
    self.driver.quit()

    if __name__ == '__main__':
    unittest.main()
  • 相关阅读:
    python做一个数独小游戏
    通过进程快照枚举进程的信息
    单向链表 malloc与free
    指针常量&指向常量的指针
    变量在不同区域的默认初始值
    数组指针和指针数组
    堆的首地址和堆的指针
    创建对象时,系统会自动调用构造函数和析构函数
    对象所占内存的大小与首地址
    范磊 C++ 第8章 指针
  • 原文地址:https://www.cnblogs.com/yjlch1016/p/8503309.html
Copyright © 2011-2022 走看看