Selenium(Python)PageObject頁面對象
阿新 • • 發佈:2018-03-04
pre fin 點擊 from 獲取 定位 dup 測試 startup
使用PageObject頁面對象的好處是,
當頁面元素的位置發生改變時,
只需要去修改Xpath或者ID,
而不用去修改測試用例本身;
本次的思路是:
1、常用方法類
2、頁面對象
3、測試用例類
WebDriverMethod.py:
from selenium import webdriver
class SeleniumMethod(object):
# 封裝Selenium常用方法
def __init__(self, driver):
self.driver = driver
def startUpFirefox(self):
# 打開Firefox瀏覽器
self.driver = webdriver.Firefox()
def openURL(self, urlAddress):
# 打開地址
self.driver.get(urlAddress)
def MaxWindow(self):
# 把瀏覽器窗口最大化
return self.driver.maximize_window()
def getTitle(self):
# 獲取頁面標題
return self.driver.title
def clearAndIinput(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
def closeWindow(self):
# 關閉窗口
return self.driver.close()
def quiteDriver(self):
# 結束driver
return self.driver.quit()
BaiduHome.py:
from WebDriverMethod import SeleniumMethod
class BaiduPage(SeleniumMethod):
# 百度頁面對象
baiduUrl = "https://www.baidu.com/"
# 百度首頁的地址
baiduTitle = "百度一下,你就知道"
# 百度首頁的標題
inputBox = ".//*[@id=‘kw‘]"
# 百度輸入框
searchBotton = ".//*[@id=‘su‘]"
# 百度搜索按鈕
responseTitle = "中國_百度搜索"
# 搜索結果頁的標題
oneResult = ".//*[@id=‘1‘]/h3/a"
# 第一行
oneResultText = "中國_百度百科"
# 第一行的文本
def openBaidu(self):
# 打開百度
self.startUpFirefox()
self.MaxWindow()
self.openURL(self.baiduUrl)
def searchChinese(self):
# 搜索中國
self.clearAndIinput(self.inputBox, "中國")
self.click(self.searchBotton)
def exitBaidu(self):
# 退出百度
self.closeWindow()
self.quiteDriver()
BaiduTest.py:
import unittest
from time import sleep
from BaiduHome import BaiduPage
class MyTestCase(unittest.TestCase):
def test_searchChinese(self):
# 測試用例
homePage = BaiduPage(self)
homePage.openBaidu()
assert homePage.getTitle(), homePage.baiduTitle
# 斷言百度標題
sleep(2)
homePage.searchChinese()
sleep(2)
assert homePage.getTitle(), homePage.responseTitle
# 斷言搜索結果頁標題
assert homePage.getText(homePage.oneResult), homePage.oneResultText
# 斷言搜索結果第一行的文本
homePage.exitBaidu()
if __name__ == ‘__main__‘:
unittest.main()
Selenium(Python)PageObject頁面對象