第2章 Selenium WebDriver的基本應(yīng)用_第1頁
第2章 Selenium WebDriver的基本應(yīng)用_第2頁
第2章 Selenium WebDriver的基本應(yīng)用_第3頁
第2章 Selenium WebDriver的基本應(yīng)用_第4頁
第2章 Selenium WebDriver的基本應(yīng)用_第5頁
已閱讀5頁,還剩117頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第2章SeleniumWebDriver的基本應(yīng)用《自動化測試應(yīng)用教程(Web+App)》學(xué)習(xí)目標(biāo)/Target了解SeleniumWebDriver的簡介,能夠闡述SeleniumWebDriver的作用掌握Web自動化測試環(huán)境的搭建,能夠獨(dú)自搭建Python環(huán)境、安裝Selenium和瀏覽器驅(qū)動了解元素定位的簡介,能夠闡述元素定位的定義掌握瀏覽器定位元素的方式,能夠靈活應(yīng)用Chrome瀏覽器和Firefox瀏覽器定位頁面元素掌握Selenium定位元素方法的使用,能夠定位單個元素和一組元素學(xué)習(xí)目標(biāo)/Target掌握獲取元素常用信息方法的使用,能夠獲取元素尺寸、文本和屬性掌握元素的常用操作,能夠?qū)崿F(xiàn)測試頁面的輸入、清除等操作掌握鼠標(biāo)的常用操作,能夠?qū)崿F(xiàn)鼠標(biāo)單擊、雙擊、拖曳等操作掌握鍵盤的常用操作,能夠?qū)崿F(xiàn)復(fù)制、粘貼、全選等操作掌握瀏覽器的常用操作,能夠設(shè)置瀏覽器窗口、刷新瀏覽器頁面等章節(jié)概述/Summary在第1章中我們已學(xué)習(xí)了自動化測試的基礎(chǔ)知識,初步認(rèn)識了自動化測試,如果想要實現(xiàn)Web自動化測試,首先需要搭建自動化測試環(huán)境,然后編寫Web自動化測試腳本,通過瀏覽器驅(qū)動操作Web頁面。在編寫自動化測試腳本的過程中,SeleniumWebDriver(網(wǎng)頁驅(qū)動程序)扮演著重要的角色,在自動化測試腳本中調(diào)用SeleniumWebDriver提供的方法可以實現(xiàn)多種測試操作,例如元素定位、獲取元素的常用信息等,所以我們需要學(xué)習(xí)并掌握SeleniumWebDriver在Web自動化測試中的應(yīng)用。本章將對SeleniumWebDriver的基本應(yīng)用進(jìn)行講解。目錄/Contents0102SeleniumWebDriver簡介搭建Web自動化測試環(huán)境03元素定位簡介04使用瀏覽器定位頁面元素05使用Selenium定位頁面元素目錄/Contents0607獲取元素的常用信息元素的常用操作08鼠標(biāo)的常用操作09鍵盤的常用操作10瀏覽器的常用操作SeleniumWebDriver簡介2.1

先定一個小目標(biāo)!了解SeleniumWebDriver的簡介,能夠闡述SeleniumWebDriver的作用2.1SeleniumWebDriver簡介2.1SeleniumWebDriver簡介SeleniumWebDriver(網(wǎng)頁驅(qū)動程序)是基于Selenium2.0而設(shè)計的一套類庫,該庫提供了簡單、豐富且設(shè)計良好的面向?qū)ο蟮腁PI(ApplicationProgrammingInterface,應(yīng)用程序編程接口)。SeleniumWebDriver是按照Server-Client(服務(wù)器端-客戶端)的模式進(jìn)行設(shè)計的。Server即RemoteServer(遠(yuǎn)程服務(wù)器),它主要是等待Client(客戶端)發(fā)送請求并做出響應(yīng)。Client以HTTP請求的方式將自動化測試腳本發(fā)送給Server,Server接收請求后執(zhí)行相應(yīng)操作并在Response(響應(yīng))中返回執(zhí)行狀態(tài)、返回值等信息。2.1SeleniumWebDriver簡介SeleniumWebDriver是Python中用于實現(xiàn)Web自動化測試的第三方庫,該庫提供了定位元素方法、元素操作方法、鼠標(biāo)操作方法、鍵盤操作方法等,通過這些方法解決了Selenium1.0版本無法觸發(fā)鍵盤和鼠標(biāo)事件的問題。SeleniumWebDriver和SeleniumRC都提供了Web自動化測試的各種語言調(diào)用接口庫。SeleniumRC使用注入JavaScript的方式來驅(qū)動瀏覽器,此種方式的腳本執(zhí)行速度較慢。與SeleniumRC不同的是,SeleniumWebDriver是使用瀏覽器的驅(qū)動程序來驅(qū)動瀏覽器,其腳本執(zhí)行的速度更快,編程接口更加直觀易懂,大大提高了測試人員編寫腳本的效率。搭建Web自動化測試環(huán)境2.2

先定一個小目標(biāo)!掌握Python環(huán)境的搭建,能夠獨(dú)自搭建Python環(huán)境2.2.1搭建Python環(huán)境步驟一:下載Python解釋器訪問Python的官方網(wǎng)站,下載Windows系統(tǒng)的Python解釋器,具體操作過程如下圖所示。2.2.1搭建Python環(huán)境步驟二:安裝Python解釋器Python解釋器安裝步驟123452.2.1搭建Python環(huán)境為了驗證Python解釋器是否安裝成功,可以在cmd命令窗口中輸入“Python”命令來檢測,如下圖所示。2.2.1搭建Python環(huán)境步驟三:下載PyCharm訪問PyCharm官方網(wǎng)站并進(jìn)入PyCharm的下載頁面,選擇Community版本進(jìn)行下載,如下圖所示。2.2.1搭建Python環(huán)境4步驟四:安裝PyCharm123562.2.1搭建Python環(huán)境2.2.2安裝Selenium

先定一個小目標(biāo)!掌握Selenium的安裝,能夠獨(dú)自安裝Selenium2.2.2安裝Selenium在進(jìn)行Web自動化測試時,編寫自動化測試腳本需要用到Selenium,所以需要在PyCharm工具中安裝Selenium。在安裝Selenium時可以通過兩種方式,第一種方式是通過pip包管理工具進(jìn)行安裝,第二種方式是通過PyCharm進(jìn)行安裝。2.2.2安裝Selenium首先打開cmd命令窗口,在該窗口中輸入“pipinstallselenium”命令,如右圖所示。1.通過pip包管理工具安裝Selenium2.2.2安裝Selenium當(dāng)通過“pipinstallselenium”命令安裝Selenium時,系統(tǒng)將默認(rèn)安裝當(dāng)前最新的版本。如果需要安裝指定的Selenium版本,則可以使用“pipinstallselenium==版本號”命令。2.2.2安裝Selenium需要注意的是,如果使用pip包管理工具安裝Selenium后,當(dāng)打開PyCharm進(jìn)行導(dǎo)包時提示找不到Selenium包,這說明使用pip包管理工具安裝Selenium的默認(rèn)安裝路徑和安裝Python所在的安裝路徑不一致,此種情況下可以打開PyCharm,單擊菜單欄中的“File→Settings”選項,會進(jìn)入“Settings”對話框,在該對話框的右側(cè)的“PythonInterpreter”處將路徑修改為Python所在的安裝路徑即可。注意2.2.2安裝Selenium通過PyCharm安裝Selenium的具體操作過程如下圖所示。2.通過PyCharm安裝Selenium2.2.3安裝瀏覽器驅(qū)動

先定一個小目標(biāo)!掌握瀏覽器驅(qū)動的安裝,能夠獨(dú)自安裝瀏覽器驅(qū)動2.2.3安裝瀏覽器驅(qū)動步驟一:查看Chrome版本信息首先單擊Chrome瀏覽器右上角的

,然后選擇“幫助→關(guān)于GoogleChrome”選項,會彈出一個“關(guān)于Chrome”頁面,在該頁面中可以查看Chrome的版本信息。2.2.3安裝瀏覽器驅(qū)動步驟二:下載Chrome驅(qū)動訪問Chrome瀏覽器驅(qū)動的官方網(wǎng)站,可以根據(jù)自己計算機(jī)上的Chrome瀏覽器版本下載對應(yīng)的瀏覽器驅(qū)動版本,如下圖所示。2.2.3安裝瀏覽器驅(qū)動需要注意的是,如果Chrome瀏覽器的版本為92.0.4515.159,在Chrome瀏覽器驅(qū)動頁面中找不到相同版本的瀏覽器驅(qū)動,可以找近似的版本驅(qū)動,例如,92.0.4515.107、92.0.4515.108等。注意2.2.3安裝瀏覽器驅(qū)動當(dāng)成功下載瀏覽器驅(qū)動安裝包后,需要將瀏覽器驅(qū)動安裝包解壓到Python的安裝目錄中,如下圖所示。2.2.3安裝瀏覽器驅(qū)動需要注意的是,在網(wǎng)絡(luò)連接正常的情況下,瀏覽器默認(rèn)會自動更新為最新版本,此時瀏覽器版本與瀏覽器驅(qū)動版本就會出現(xiàn)不一致的問題,當(dāng)運(yùn)行自動化測試腳本代碼時,程序會提示瀏覽器驅(qū)動版本不支持當(dāng)前版本的瀏覽器。為了避免這個問題的出現(xiàn),安裝好瀏覽器后,需要手動關(guān)閉瀏覽器的自動更新功能。注意2.2.3安裝瀏覽器驅(qū)動首先按下快捷鍵“Win+R”,打開運(yùn)行對話框,然后在該對話框中輸入“taskschd.msc”,單擊“確定”按鈕,此時會“打開任務(wù)計劃程序”窗口,在該窗口中選中名稱為“GoogleUpdateTaskUserS...”的條目,右擊選擇“禁用”選項,如下圖所示。元素定位簡介2.32.3元素定位簡介

先定一個小目標(biāo)!了解元素定位的簡介,能夠闡述元素定位的定義2.3元素定位簡介測試Web項目時,其實是對項目中的每個網(wǎng)頁進(jìn)行測試的過程。網(wǎng)頁是由文本、圖像、按鈕、超鏈接等各類視覺元素組成的,測試人員需要通過肉眼觀察網(wǎng)頁中的元素然后進(jìn)行功能驗證。但是在自動化測試的過程中,自動化測試工具是不能進(jìn)行人為觀察的,只有讓自動化測試工具準(zhǔn)確地定位到頁面元素才能進(jìn)行相關(guān)的測試操作,因此需要學(xué)習(xí)元素定位。2.3元素定位簡介元素定位是通過元素信息或元素層級結(jié)構(gòu)來定位元素的。SeleniumWebDriver根據(jù)網(wǎng)頁中頁面元素?fù)碛胁煌臉?biāo)簽名和屬性值等特征來定位不同的頁面元素,當(dāng)成功定位到頁面元素后即可對頁面元素進(jìn)行操作。Web頁面是由CSS、JavaScript等腳本語言開發(fā)的,可以通過查看Web頁面的源文件找到頁面元素的標(biāo)簽,該標(biāo)簽的語法格式如下。<標(biāo)簽名屬性名1="屬性值1"屬性名2="屬性值2">文本</標(biāo)簽名>上述格式中的屬性名可以是id、name、class等,每一個屬性名都有對應(yīng)的屬性值,而這些屬性值是在定位元素時需要獲取的元素信息。使用瀏覽器定位頁面元素2.42.4.1使用Chrome瀏覽器定位頁面元素

先定一個小目標(biāo)!掌握Chrome瀏覽器定位元素的方式,能夠靈活應(yīng)用Chrome瀏覽器定位頁面元素2.4.1使用Chrome瀏覽器定位頁面元素當(dāng)成功安裝Chrome瀏覽器時,程序會默認(rèn)安裝該瀏覽器的開發(fā)者工具,通過瀏覽器的開發(fā)者工具,可以對Web頁面中的元素進(jìn)行調(diào)試和分析,同時也可以定位頁面中的元素。打開Chrome瀏覽器開發(fā)者工具的方式有兩種。通過F12快捷鍵打開。在頁面中的任意地方右擊,選擇“檢查”選項打開。2.4.1使用Chrome瀏覽器定位頁面元素定位頁面中某個元素的方式也有兩種。在頁面中該元素的上方右擊選擇“檢查”選項即可定位到該元素。打開瀏覽器開發(fā)者工具,首先單擊選擇元素的圖標(biāo)

,然后單擊要定位的元素。定位元素后,可在“Elements”中看到定位元素的id、name、class等屬性信息。2.4.1使用Chrome瀏覽器定位頁面元素下面以TPshop(開源商城)項目為例,按照前面所講的定位元素操作,定位該項目登錄頁面中的密碼框元素。密碼框元素信息如下圖所示。2.4.2使用Firefox瀏覽器定位頁面元素

先定一個小目標(biāo)!掌握Firefox瀏覽器定位元素的方式,能夠靈活應(yīng)用Firefox瀏覽器定位頁面元素2.4.2使用Firefox瀏覽器定位頁面元素下面以TPshop(開源商城)項目為例,使用Firefox瀏覽器來定位登錄頁面中的“登錄”按鈕元素。首先按下“F12”鍵打開Firefox瀏覽器開發(fā)者工具,此時在“登錄”按鈕上方右擊選擇“檢查”選項,就可以定位到“登錄”按鈕,并看到該按鈕的相關(guān)信息,如下圖所示。使用Selenium定位頁面元素2.52.5.1單個元素的定位

先定一個小目標(biāo)!掌握Selenium定位元素的方式,能夠定位單個元素2.5.1單個元素的定位在SeleniumWebDriver中提供了8種元素定位的方式,分別是id定位、name定位、classname定位、tagname定位、linktext定位、partiallinktext定位、xpath定位和css定位。下面將分別介紹使用這8種元素定位的方式對單個元素進(jìn)行定位。2.5.1單個元素的定位id定位是通過元素的id屬性值來定位元素。由于在HTML頁面中id屬性值一般不會重復(fù),所以很少有根據(jù)id定位多個元素的情況,通常使用id定位單個元素。使用id定位元素的前提條件是元素中必須有id屬性名。在程序中根據(jù)元素的id屬性值定位元素時,可以調(diào)用find_element_by_id()方法,該方法的語法格式如下。find_element_by_id(id)#參數(shù)id表示元素在HTML頁面中的id屬性值1.id定位2.5.1單個元素的定位name定位是通過元素的name屬性值來定位元素。由于在HTML頁面中,name屬性值是可以重復(fù)的,所以在使用name定位元素時就容易出現(xiàn)定位不準(zhǔn)確的情況。如果HTML頁面中存在多個重復(fù)的name屬性值,可以選擇8種元素定位方法中的其他方法來定位元素。使用name定位元素的前提條件是元素中必須有name屬性名。find_element_by_name(name)#參數(shù)name表示元素在HTML頁面中的name屬性值在程序中根據(jù)元素的name屬性值定位元素時,可以調(diào)用find_element_by_name()方法,該方法的語法格式如下。2.name定位2.5.1單個元素的定位classname定位是通過元素的class屬性值來定位元素。在HTML頁面中,class屬性主要用于渲染頁面的樣式。如果使用classname定位元素,當(dāng)一個HTML頁面中的class屬性值有多個時,選擇其中一個即可。使用classname定位元素的前提條件是元素中必須有class屬性名。find_element_by_class_name(name)#參數(shù)name表示元素在HTML頁面中的class屬性值在程序中根據(jù)元素的classname屬性值定位元素時,可以調(diào)用find_element_by_class_name()方法,該方法的語法格式如下。3.classname定位2.5.1單個元素的定位tagname定位是通過元素的標(biāo)簽名來定位元素。HTML頁面由多種不同的標(biāo)簽組成,一個頁面中的某個標(biāo)簽也會出現(xiàn)多個,如果定位到多個相同的標(biāo)簽名,則默認(rèn)只會定位第一個標(biāo)簽,所以在使用tagname定位元素時無法精確定位,一般很少使用這個方法。find_element_by_tag_name(name)#參數(shù)name表示元素在HTML頁面的標(biāo)簽名在程序中根據(jù)元素的tagname屬性值定位元素時,可以調(diào)用find_element_by_tag_name()方法,該方法的語法格式如下。4.tagname定位2.5.1單個元素的定位linktext定位是通過超鏈接的文本內(nèi)容來定位元素,例如,<a>標(biāo)簽(超鏈接)中的文本內(nèi)容。在程序中根據(jù)超鏈接的文本內(nèi)容來定位元素時,可以調(diào)用find_element_by_link_text()方法,該方法的語法格式如下。find_element_by_link_text(text)#參數(shù)text表示超鏈接的全部文本內(nèi)容5.linktext定位2.5.1單個元素的定位partiallinktext定位是通過超鏈接文本中的部分或全部內(nèi)容來定位元素。partiallinktext定位與linktext定位比較類似,不同的是partiallinktext定位可以使用超鏈接文本中的部分或全部內(nèi)容來定位元素,而linktext定位使用的是超鏈接文本中的全部內(nèi)容來定位元素。find_element_by_partial_link_text(link_text)#參數(shù)link_text表示超鏈接文本的部分或全部內(nèi)容在程序中根據(jù)超鏈接的部分或全部文本內(nèi)容來定位元素時,可以調(diào)用find_element_by_partial_link_text()方法,該方法的語法格式如下。6.partiallinktext定位2.5.1單個元素的定位xpath(XMLPathLanguage的簡稱)定位是基于元素的路徑定位,在程序中根據(jù)元素的路徑定位時,可以調(diào)用find_element_by_xpath()方法,該方法的語法格式如下。find_element_by_xpath(xpath)#參數(shù)xpath表示元素路徑7.xpath定位2.5.1單個元素的定位絕對路徑是從最外層元素到指定元素之間所有經(jīng)過元素層級的路徑。絕對路徑的寫法是以單斜杠開頭逐級開始編寫,不能跳級。(1)xpath通過絕對路徑定位元素(2)xpath通過相對路徑定位元素相對路徑可匹配任意層級的元素,不限制元素的位置。相對路徑的寫法是以雙斜杠開頭,雙斜杠后面緊跟著元素名稱,不確定的元素名稱可以使用*代替。例如,//input或//*。2.5.1單個元素的定位xpath定位元素寫法說明//span/input[1]通過索引定位,表示選取第一個與表達(dá)式//span/input匹配的元素//span/input[last()]通過索引定位,表示選取最后一個與表達(dá)式//span/input匹配的元素//input[@id='dl']通過id屬性定位,表示定位id屬性值為dl的元素//input[@name='mz']通過name屬性定位,表示定位name屬性值為mz的元素//input[@class='s_ipl']通過class屬性定位,表示定位class屬性值為s_ipl的元素//*[@id='kw']通過通配符*定位,表示定位所有id屬性值為kw的元素//a[@name='book'ortext()='music']通過邏輯表達(dá)式定位,表示定位name屬性值為book或者文本內(nèi)容為music的元素/a[contains(@href'新聞')andtext()='新聞聯(lián)播']通過邏輯表達(dá)式定位,表示定位href屬性中包含“新聞”并且文本內(nèi)容中包含“新聞聯(lián)播”的元素/html/body/input[1]通過絕對路徑定位,表示定位/html/body/input下的第一個<input>標(biāo)簽常用的xpath定位元素寫法與說明如下表所示。2.5.1單個元素的定位css定位通過css選擇器工具進(jìn)行定位。該方法比xpath定位的速度快,css語法也十分強(qiáng)大,語法比xpath簡單,但是對初學(xué)者來說,學(xué)習(xí)起來稍微有點(diǎn)難度。在程序中根據(jù)css選擇器工具進(jìn)行定位時,可以調(diào)用find_element_by_css_selector()方法,該方法的語法格式如下。find_element_by_css_selector(css_selector)#參數(shù)css_selector表示選擇器8.css定位2.5.1單個元素的定位常用的選擇器包括id選擇器、class選擇器、元素選擇器、屬性選擇器和層級選擇器等,其中,層級選擇器又分為父子層級選擇器和隔代層級選擇器,不同的選擇器在語法和使用方法上也會有所差異。2.5.1單個元素的定位css選擇器語法格式說明id選擇器#id根據(jù)元素id屬性選擇,例如#userA,表示選擇id屬性值為userA的元素class選擇器.class根據(jù)元素class屬性選擇,例如.telA,表示選擇class屬性值為telA的所有元素元素選擇器element根據(jù)元素標(biāo)簽名選擇,例如input,表示選擇標(biāo)簽名為<input>的所有元素屬性選擇器[屬性名=屬性值]根據(jù)元素的屬性名和屬性值選擇,例如[type="password"],表示選擇type屬性值為password的元素父子層級選擇器element1>element2根據(jù)父子層級選擇,element2是element1的直接子元素,例如p[id='p1']>input,表示定位指定p元素下的直接子元素input隔代層級選擇器element1

element2根據(jù)隔代層級選擇,element2是element1的后代元素,例如p[id='p1']input,表示定位指定p元素之后的所有input元素常用的css選擇器語法格式和說明如下表所示。2.5.1單個元素的定位學(xué)習(xí)了8種常用的元素定位方式后,下面以TPshop(開源商城)項目為例,使用這8種常用的元素定位方式來定位該項目中的登錄頁面元素,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="http://hm/Home/user/login.html"driver.get(url)#通過id定位手機(jī)號/郵箱輸入框元素username=driver.find_element_by_id("username").send_keys()#通過name定位密碼輸入框元素password=driver.find_element_by_name("password").send_keys("123456")#通過id定位驗證碼輸入框元素driver.find_element_by_id("verify_code").send_keys("8888")#利用xpath定位"登錄"按鈕元素driver.find_element_by_xpath("http://*[@id='loginform']/div/div[6]/a").click()2.5.2一組元素的定位

先定一個小目標(biāo)!掌握Selenium定位元素的方式,能夠定位一組元素2.5.2一組元素的定位當(dāng)測試的頁面上有多個元素需要操作時,逐一進(jìn)行定位就會比較煩瑣,例如需要同時選擇頁面中的所有復(fù)選框,這時候可以通過一組元素進(jìn)行定位。定位單個元素的方法和定位一組元素的方法類似,區(qū)別在于,定位一組元素時需要在方法中的find_element后面加上s,即find_elements,表示元素為復(fù)數(shù)。2.5.2一組元素的定位方法說明find_elements_by_id()表示通過元素的id屬性值定位一組元素find_elements_by_name()表示通過元素的name屬性值定位一組元素find_elements_by_class_name()表示通過元素的class屬性值定位一組元素find_elements_by_tag_name()表示通過元素tagname(標(biāo)簽名)定位一組元素find_elements_by_link_text()表示通過超鏈接全部文本內(nèi)容定位一組元素find_elements_by_partial_link_text()表示通過超鏈接部分或全部文本內(nèi)容定位一組元素find_elements_by_xpath()表示通過元素路徑定位一組元素find_elements_by_css_selector()表示通過css選擇器定位一組元素定位一組元素的方法如下表所示。2.5.2一組元素的定位下面以傳智教育官網(wǎng)為例,定位傳智教育官網(wǎng)首頁橫向的一組導(dǎo)航菜單鏈接,然后隨機(jī)單擊任意一個鏈接。首頁導(dǎo)航菜單鏈接的元素信息如下圖所示。2.5.2一組元素的定位定位一組導(dǎo)航菜單鏈接元素的具體代碼如下。importrandomfromseleniumimportwebdriverdriver=webdriver.Chrome()url="/"driver.get(url)#獲取首頁頭部橫向的所有鏈接elements=driver.find_elements_by_class_name("a2_js")length=len(elements)#隨機(jī)獲取一個鏈接Random_selection=random.randint(0,length-1)elements[Random_selection].click()多學(xué)一招在元素定位時,還可以使用find_element()方法,該方法通過By來聲明定位,并傳入對應(yīng)定位方法的定位參數(shù)。find_element()方法的語法格式如下。find_element定位find_element(by=By.ID,value=None)參數(shù)by表示元素定位的類型,由By提供,默認(rèn)通過ID屬性值來定位。參數(shù)value表示元素定位類型的屬性值。在使用find_element()方法進(jìn)行元素定位時,需要導(dǎo)入By類,具體如下。frommon.byimportBy多學(xué)一招find_element定位使用find_element()方法來定位元素的示例代碼如下。driver.find_element(By.ID,"userA")driver.find_element(By.NAME,"passwordA")driver.find_element(By.CLASS_NAME,"telA")driver.find_element(By.TAG_NAME,"input")driver.find_element(By.LINK_TEXT,'訪問新浪網(wǎng)站')driver.find_element(By.PARTIAL_LINK_TEXT,'訪問')driver.find_element(By.XPATH,'//*[@id="emailA"]')driver.find_element(By.CSS_SELECTOR,'#emailA')多學(xué)一招find_element定位find_element_by_id()方法的底層實現(xiàn)方法如下。deffind_element_by_id(self,id_):"""Findsanelementbyid.:Args:-id\_-Theidoftheelementtobefound.:Usage:driver.find_element_by_id('foo')"""returnself.find_element(by=By.ID,value=id_)獲取元素的常用信息2.62.6.1獲取元素尺寸

先定一個小目標(biāo)!掌握獲取元素常用信息方法的使用,能夠獲取元素尺寸在Web自動化測試過程中,通過SeleniumWebDriver提供的size屬性可獲取元素尺寸,該屬性的返回值是元素的高度和寬度。需要注意的是,在程序中使用size屬性時,后邊沒有小括號,直接使用.size的方式即可。2.6.1獲取元素尺寸搜索引擎下面以傳智教育官網(wǎng)為例,詳細(xì)介紹獲取該官網(wǎng)首頁的傳智教育圖標(biāo)元素尺寸的步驟。首先在Chrome瀏覽器中打開傳智教育官網(wǎng),按“F12”

快捷鍵,可查看傳智教育圖標(biāo)元素的實際尺寸,傳智教育官網(wǎng)首頁如下圖所示。2.6.1獲取元素尺寸搜索引擎2.6.1獲取元素尺寸獲取圖標(biāo)元素尺寸的具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="/"driver.get(url)#定位傳智教育圖標(biāo)元素并使用size屬性element=driver.find_element_by_xpath("/html/body/div[1]/div[2]/div[2]/div[1]/h1/a/img").sizeprint(element)2.6.2獲取元素文本

先定一個小目標(biāo)!掌握獲取元素常用信息方法的使用,能夠獲取元素文本獲取元素文本時可以利用SeleniumWebDriver提供的text屬性,通過在程序中先定位到具體的元素,然后通過text屬性就可以獲取文本信息。需要注意的是,在程序中使用text屬性時,后邊沒有小括號,直接使用.text的方式即可。2.6.2獲取元素文本搜索引擎2.6.2獲取元素文本下面演示通過text屬性來獲取傳智教育官網(wǎng)首頁的“關(guān)于傳智”文本信息,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="/"driver.get(url)#定位元素并使用text屬性element=driver.find_element_by_partial_link_text("關(guān)于傳智").textprint(element)2.6.3獲取元素屬性值

先定一個小目標(biāo)!掌握獲取元素常用信息方法的使用,能夠獲取元素屬性值在進(jìn)行Web自動化測試時,可以通過獲取元素屬性或判斷元素是否可用等方式來判斷測試用例的最終執(zhí)行結(jié)果,下面主要對元素屬性值獲取、判斷元素是否可用、判斷元素是否可見和判斷元素是否被選中進(jìn)行詳細(xì)介紹。2.6.3獲取元素屬性值搜索引擎2.6.3獲取元素屬性值在Web自動化測試中,可以通過獲取元素的屬性值進(jìn)行斷言。獲取元素屬性值的方法是get_attribute(),該方法的語法格式如下。get_attribute(name)#參數(shù)name表示元素的屬性名1.元素屬性值獲取2.6.3獲取元素屬性值下面以傳智教育黑馬程序員社區(qū)頁面為例,獲取頁面中“發(fā)帖”按鈕的元素屬性值,傳智教育黑馬程序員社區(qū)頁面如下圖所示。2.6.3獲取元素屬性值下面演示調(diào)用get_attribute()方法,獲取“發(fā)帖”按鈕元素屬性名為title的屬性值,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="/?jingjiaczpz-PC-1"driver.get(url)#定位元素并調(diào)用get_attribute()方法post_button=driver.find_element_by_xpath("http://*[@id='portal_block_417_content']/""div/div/a[1]").get_attribute("title")print(post_button)2.6.3獲取元素屬性值在Web自動化測試中,有時候需要判斷頁面中的按鈕是否可以正常使用,可以通過調(diào)用is_enabled()方法來實現(xiàn),該方法的語法格式如下。is_enable()2.判斷元素是否可用2.6.3獲取元素屬性值下面以傳智教育黑馬程序員社區(qū)頁面為例,調(diào)用is_enabled()方法判斷簽到”按鈕元素是否可用,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="/?jingjiaczpz-PC-1"driver.get(url)#定位"簽到"按鈕元素sign_in_button=driver.find_element_by_xpath("http://*[@id='portal_block_417_content']""/div/div/a[2]")#判斷元素是否可用并輸出結(jié)果print(sign_in_button.is_enabled())2.6.3獲取元素屬性值在Web自動化測試中,也可以通過判斷元素是否可見來進(jìn)行斷言。在程序中判斷元素是否可見的方法是is_displayed(),該方法的語法格式如下。is_displayed()3.判斷元素是否可見2.6.3獲取元素屬性值下面以傳智教育黑馬程序員社區(qū)頁面為例,調(diào)用is_displayed()方法判斷該頁面中的黑馬程序員圖標(biāo)是否可見,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="/?jingjiaczpz-PC-1"driver.get(url)#定位黑馬程序員圖標(biāo)元素hm_log=driver.find_element_by_xpath("http://*[@id='Quater_bar']/div[2]/div[1]/h2/a/img")#判斷元素是否可見并輸出結(jié)果print(hm_log.is_displayed())2.6.3獲取元素屬性值在Web自動化測試中,判斷元素是否被選中一般用于測試頁面表單中的單選框和復(fù)選框。有些頁面表單中的單選框和復(fù)選框是默認(rèn)選中的,在程序中判斷元素是否被選中可以調(diào)用is_selected()方法,該方法的語法格式如下。is_selected()4.判斷元素是否被選中2.6.3獲取元素屬性值下面以TPshop(開源商城)項目為例,判斷用戶注冊頁面的“我已閱讀并同意《TPshop網(wǎng)服務(wù)協(xié)議》”復(fù)選框元素是否被選中。如果該復(fù)選框元素被選中,返回結(jié)果為“True”,否則返回“False“。TPshop開源商城用戶注冊頁面如下圖所示。2.6.3獲取元素屬性值下面調(diào)用is_selected()方法判斷用戶注冊頁面的“我已閱讀并同意《TPshop網(wǎng)服務(wù)協(xié)議》”復(fù)選框元素是否被選中,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="http:///Home/user/reg.html"driver.get(url)#定位復(fù)選框元素check_box=driver.find_element_by_class_name("J_protocal")#判斷元素是否被選中并輸出結(jié)果print(check_box.is_selected())元素的常用操作2.72.7元素的常用操作

先定一個小目標(biāo)!掌握元素的常用操作,能夠?qū)崿F(xiàn)測試頁面的輸入、清除等操作2.7元素的常用操作當(dāng)頁面中遇到想要輸入元素內(nèi)容的情況時,可以在自動化測試的腳本代碼中調(diào)用send_keys()方法來自動輸入元素的內(nèi)容,該方法的語法格式如下。send_keys(*value)#參數(shù)*value表示輸入的內(nèi)容1.輸入元素內(nèi)容2.7元素的常用操作在Web自動化測試的過程中,如果想要清空頁面的輸入框或搜索框中的信息,可以通過在自動化測試的腳本代碼中調(diào)用clear()方法來實現(xiàn),該方法的語法格式如下。2.清除元素內(nèi)容clear()2.7元素的常用操作在Web自動化測試的過程中,如果想要提交頁面中的form表單或者模擬按下“Enter”鍵提交表單,可以在自動化測試的腳本代碼中調(diào)用submit()方法來實現(xiàn),該方法的語法格式如下。3.提交表單submit()2.7元素的常用操作下面以訪問必應(yīng)首頁為例,演示如何在必應(yīng)首頁的輸入框中輸入元素內(nèi)容、清空元素內(nèi)容和提交表單,必應(yīng)首頁如下圖所示。2.7元素的常用操作下面分別調(diào)用send_keys()方法、clear()方法和submit()方法,實現(xiàn)對輸入框的輸入、清除和提交表單操作,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="/"driver.get(url)#定位搜索框元素并輸入內(nèi)容input_box=driver.find_element_by_xpath("http://input[@id='sb_form_q']")input_box.send_keys("軟件")#清空搜索框內(nèi)容input_box.clear()input_box.send_keys("軟件測試")#提交表單input_box.submit()鼠標(biāo)的常用操作2.82.8鼠標(biāo)的常用操作

先定一個小目標(biāo)!掌握鼠標(biāo)的常用操作,能夠?qū)崿F(xiàn)鼠標(biāo)單擊、雙擊、拖動等操作鼠標(biāo)的常用操作包括鼠標(biāo)執(zhí)行、鼠標(biāo)單擊、鼠標(biāo)雙擊、鼠標(biāo)拖曳和鼠標(biāo)懸停,SeleniumWebDriver為這些鼠標(biāo)操作提供了對應(yīng)的方法。2.8鼠標(biāo)的常用操作2.8鼠標(biāo)的常用操作方法說明perform()鼠標(biāo)執(zhí)行,所有的鼠標(biāo)操作都需要調(diào)用該方法才可以生效click()鼠標(biāo)單擊content_click()鼠標(biāo)右鍵單擊double_click()鼠標(biāo)雙擊drag_and_drop(source,target)鼠標(biāo)拖曳,第1個參數(shù)source表示源元素,即被拖動的元素,第2個參數(shù)target表示目標(biāo)元素move_to_element()鼠標(biāo)懸停常用的鼠標(biāo)操作方法如下表所示。2.8鼠標(biāo)的常用操作下面以京東商城首頁為例,調(diào)用move_to_element()方法實現(xiàn)鼠標(biāo)懸停在家用電器元素上,具體代碼如下。fromseleniumimportwebdriverfrommon.action_chainsimportActionChainsdriver=webdriver.Chrome()driver.get("/")#定位家用電器元素house_device=driver.find_element_by_xpath("http://*[@id='J_cate']/ul/li[1]/a")#創(chuàng)建鼠標(biāo)對象action=ActionChains(driver)#調(diào)用鼠標(biāo)懸停的方法action.move_to_element(house_device)#調(diào)用鼠標(biāo)執(zhí)行的方法action.perform()鍵盤的常用操作2.92.9鍵盤的常用操作

先定一個小目標(biāo)!掌握鍵盤的常用操作,能夠?qū)崿F(xiàn)復(fù)制、粘貼、全選等操作在Web自動化測試的過程中,除了會對鼠標(biāo)進(jìn)行一些常用操作外,還會對鍵盤進(jìn)行一些常用操作,例如復(fù)制、粘貼、全選等。鍵盤的這些常用操作在SeleniumWebDriver中都有對應(yīng)的方法,這些方法都封裝在Keys類中,所以在使用這些鍵盤操作方法之前首先需要導(dǎo)入Keys類,具體代碼如下。2.9鍵盤的常用操作聚合平臺frommon.keysimportKeys2.9鍵盤的常用操作方法說明send_keys(Keys.CONTROL,'a')表示全選(Ctrl+A)send_keys(Keys.CONTROL,'c')表示復(fù)制(Ctrl+C)send_keys(Keys.CONTROL,'x')表示剪切(Ctrl+X)send_keys(Keys.CONTROL,'v')表示粘貼(Ctrl+V)send_keys(Keys.BACK_SPACE)表示刪除鍵(Backspace)send_keys(Keys.SPACE)表示空格鍵(Space)send_keys(Keys.TAB)表示制表鍵(Tab)send_keys(Keys.ESCAPE)表示回退鍵(Esc)send_keys(Keys.ENTER)表示回車鍵(Enter)常用的鍵盤操作方法如下表所示。2.9鍵盤的常用操作下面以京東商城首頁為例,調(diào)用常用的鍵盤操作方法實現(xiàn)刪除、全選、復(fù)制等操作,具體代碼如下。[單擊查看源碼]瀏覽器的常用操作2.102.10.1瀏覽器窗口的設(shè)置

先定一個小目標(biāo)!掌握瀏覽器的常用操作,能夠設(shè)置瀏覽器窗口2.10.1瀏覽器窗口的設(shè)置在運(yùn)行自動化測試腳本的時候,默認(rèn)啟動的瀏覽器窗口并不是全屏的。由于瀏覽器窗口的位置和大小會影響Web頁面的顯示效果,所以在編寫腳本進(jìn)行自動化測試的時候需要設(shè)置瀏覽器的窗口大小。為了能夠使瀏覽器有一個良好的顯示效果,通常設(shè)置瀏覽器窗口為最大化。在SeleniumWebDriver中提供了一些方法來設(shè)置瀏覽器窗口的最大化、最小化、指定位置和指定大小。2.10.1瀏覽器窗口的設(shè)置方法說明minimize_window()將瀏覽器窗口設(shè)置為最小化maximize_window()將瀏覽器窗口設(shè)置為最大化set_window_position(x,y)將瀏覽器窗口移動到指定位置set_window_size(width,height)將瀏覽器窗口設(shè)置為指定大小,第1個參數(shù)width用于設(shè)置窗口的寬度,第2個參數(shù)height用于設(shè)置窗口的高度set_window_rect(x=None,y=None,width=None,height=None)將瀏覽器窗口移動到指定位置,并將瀏覽器窗口設(shè)置為指定大小設(shè)置瀏覽器窗口的常用方法如下表所示。2.10.1瀏覽器窗口的設(shè)置下面以京東商城首頁為例,調(diào)用設(shè)置瀏覽器窗口的常用方法來設(shè)置京東商城首頁的瀏覽器窗口,具體代碼如下。[單擊查看源碼]2.10.2瀏覽器的前進(jìn)與后退

先定一個小目標(biāo)!掌握瀏覽器的常用操作,能夠?qū)崿F(xiàn)瀏覽器的前進(jìn)或后退操作2.10.2瀏覽器的前進(jìn)與后退在使用瀏覽器訪問網(wǎng)頁的時候,通常會在瀏覽器的導(dǎo)航欄處單擊“前進(jìn)”或“后退”按鈕來切換瀏覽的網(wǎng)頁。如果要用代碼自動實現(xiàn)瀏覽器“前進(jìn)”或“后退”的操作,可以調(diào)用SeleniumWebDriver提供的forward()和back()方法。在程序中可以直接調(diào)用這兩個方法,示例代碼如下。driver.forward()#瀏覽器前進(jìn)driver.back()#瀏覽器后退2.10.2瀏覽器的前進(jìn)與后退fromseleniumimportwebdriverdriver=webdriver.Chrome()first_url='/'driver.get(first_url)second_url='/'driver.get(second_url)driver.back()print("調(diào)用后退方法,進(jìn)入傳智教育官網(wǎng)頁面")driver.forward()print("調(diào)用前進(jìn)方法,進(jìn)入京東商城官網(wǎng)頁面")下面以傳智教育官網(wǎng)和京東商城官網(wǎng)頁面為例,調(diào)用瀏覽器前進(jìn)與

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論