2根暑、使用pageobject形式達(dá)到頁面代碼與測試代碼分離

通常是三類文件
1、定位:把所有元素的定位寫在這(屬性)徙邻,如果系統(tǒng)大排嫌,可以按功能模塊寫在不同的文件夾中
locators.py

# 頁面中有二類:一類是元素,元素的定位缰犁,一類是元素的方法
from selenium.webdriver.common.by import By

# 一個大的功能模塊寫在一個文件中
class MainPageLocators(object):
    search_text = (By.ID, "sb_form_q")
    click_search = (By.ID, "sb_form_go")


class SearchResultPageLocators(object):
    search_result = (By.ID, "b_results")


2淳地、操作方法:把頁面所有的動作寫成方法(方法)怖糊,每個方法封裝,等待颇象,清除和操作等
pages.py

# 與定位的類名匹配
# 公共的方法提取出來
from .locators import MainPageLocators,SearchResultPageLocators
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


class BasePage(object):
    def __init__(self,driver):
        self.driver=driver

    def save_pic(self, filepath):
        self.driver.get_screenshot_as_file(filepath)


class MainPage(BasePage):
    def enter_search_text(self, text):
        # lambda是匿名函數(shù) *是傳參的格式是元組類型需要解包
        WebDriverWait(self.driver, 10).until(
            lambda driver: driver.find_element(*MainPageLocators.search_text)
        )
        element = self.driver.find_element(*MainPageLocators.search_text)
        element.clear()
        element.send_keys(text)

    def click_search_button(self):
        element = self.driver.find_element(*MainPageLocators.click_search)
        element.click()

    def title_matches(self):
        return self.driver.title


class SearchResultPage(BasePage):
    def results_found(self):
        # 等待元素加載出來后返回元素文本信息
        WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(SearchResultPageLocators.search_result))
        print(self.driver.find_element(*SearchResultPageLocators.search_result).text)
        return self.driver.find_element(*SearchResultPageLocators.search_result).text

3伍伤、測試用例:
使用測試管理執(zhí)行框架:可以是unittest或pytest都可以

from selenium import webdriver
import time
import unittest
import datetime,os
from ..pages import pages


class TestBingSo(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print("這是初始化開始測試")
        parent_abspath = os.path.abspath(os.path.dirname(os.getcwd()))
        driver_path =os.path.join(parent_abspath,"driver/chromedriver")
        cls.driver = webdriver.Chrome(executable_path=driver_path)
        cls.driver.get("https://cn.bing.com/?ensearch=1&FORM=BEHPTB")
        cls.driver.maximize_window()


    @classmethod
    def tearDownClass(cls):
        print("執(zhí)行完成環(huán)境銷毀")
        cls.driver.quit()

    def test_soso(self):
        main_page =pages.MainPage(self.driver)
        assert 'Bing' in main_page.title_matches()
        main_page.enter_search_text("python")
        main_page.click_search_button()
        search_result_page = pages.SearchResultPage(self.driver)
        assert 'Python' in search_result_page.results_found()
        search_result_page.save_pic(str(datetime.datetime.now())+"_soso.png")


if __name__ == '__main__':
    unittest.main()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市遣钳,隨后出現(xiàn)的幾起案子扰魂,更是在濱河造成了極大的恐慌,老刑警劉巖耍贾,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阅爽,死亡現(xiàn)場離奇詭異,居然都是意外死亡荐开,警方通過查閱死者的電腦和手機付翁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晃听,“玉大人百侧,你說我怎么就攤上這事∧馨牵” “怎么了佣渴?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長初斑。 經(jīng)常有香客問我辛润,道長,這世上最難降的妖魔是什么见秤? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任砂竖,我火速辦了婚禮,結(jié)果婚禮上鹃答,老公的妹妹穿的比我還像新娘乎澄。我一直安慰自己,他們只是感情好测摔,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布置济。 她就那樣靜靜地躺著,像睡著了一般锋八。 火紅的嫁衣襯著肌膚如雪浙于。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天挟纱,我揣著相機與錄音羞酗,去河邊找鬼。 笑死樊销,一個胖子當(dāng)著我的面吹牛整慎,可吹牛的內(nèi)容都是我干的脏款。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼裤园,長吁一口氣:“原來是場噩夢啊……” “哼撤师!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拧揽,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剃盾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后淤袜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痒谴,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年铡羡,在試婚紗的時候發(fā)現(xiàn)自己被綠了积蔚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡烦周,死狀恐怖尽爆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情读慎,我是刑警寧澤漱贱,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站夭委,受9級特大地震影響幅狮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜株灸,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一崇摄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚂且,春花似錦配猫、人聲如沸幅恋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捆交。三九已至淑翼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間品追,已是汗流浹背玄括。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肉瓦,地道東北人遭京。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓胃惜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哪雕。 傳聞我的和親對象是個殘疾皇子船殉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容