自动化测试模型之pageobjects 设计模式

Page Objects概念: Page Objects是指UI界面上用于与用户进行交互的对象。它可以指整个页面,也可以指Page上的某个区域。Page Objects是你的测试代码的交互对象,是对实际UI的一种抽象模型化。通过Page Objects可以减少重复代码的编写,例如,很多页面都有同样的header,footer,navigator等部分,如果对这些进行抽象,只写一次就可以在其他地方通用了。

pageobjects 设计模式概念: pageobjects 模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。 简单来讲,就是将代码以页面为单位进行组织,针对这个页面上的所有信息,相关操作都放到一个类中;从而使具体的测试用例变成了简单的调用和验证操作。

 

PageObjects设计模式代码实现: 一般情况下,对于一个Page Objects对象,

它有两个方面的特征:

• 自身元素(WebElement)

• 实现功能 (Services) 自身元素很好理解,就是存在的页面元素。而Page Objects通常也都是实现一定的功能的。就测试开发人员来说,更关心的是Page Objects它们实现了什么交互功能,而不是其内部的实现,因此,这里的功能与开发人员理解的功能是不一样的。

from selenium import webdriver
from selenium.webdriver.common.by import By

class BaiduPage():
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()
        self.driver.get('https://www.baidu.com')
        self.searchBox= self.driver.find_element(By.ID,"kw")
        self.searchButton=self.driver.find_element(By.ID,"su")

    def search(self,search):
        self.searchBox.send_keys(search)
        self.searchButton.click()

if __name__=='__main__':
    baidu_page=BaiduPage()
    baidu_page.search('新梦想IT教育')

 

 


发表回复