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()
  • 相关阅读:
    C语言数组和字符串函数
    C语言控制语句
    C语言输入输出函数
    C语言运算符
    C语言数据类型
    嵌入式开发基础知识
    VI编辑器的使用
    Linux文件系统和目录相关命令
    前段之必学(转载)
    26个高效工作的小技巧(转载)
  • 原文地址:https://www.cnblogs.com/yjlch1016/p/8503309.html
Copyright © 2011-2022 走看看