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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM