版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章SeleniumWebDriver的基本應(yīng)用《自動(dòng)化測(cè)試應(yīng)用教程(Web+App)》學(xué)習(xí)目標(biāo)/Target了解SeleniumWebDriver的簡(jiǎn)介,能夠闡述SeleniumWebDriver的作用掌握Web自動(dòng)化測(cè)試環(huán)境的搭建,能夠獨(dú)自搭建Python環(huán)境、安裝Selenium和瀏覽器驅(qū)動(dòng)了解元素定位的簡(jiǎn)介,能夠闡述元素定位的定義掌握瀏覽器定位元素的方式,能夠靈活應(yīng)用Chrome瀏覽器和Firefox瀏覽器定位頁面元素掌握Selenium定位元素方法的使用,能夠定位單個(gè)元素和一組元素學(xué)習(xí)目標(biāo)/Target掌握獲取元素常用信息方法的使用,能夠獲取元素尺寸、文本和屬性掌握元素的常用操作,能夠?qū)崿F(xiàn)測(cè)試頁面的輸入、清除等操作掌握鼠標(biāo)的常用操作,能夠?qū)崿F(xiàn)鼠標(biāo)單擊、雙擊、拖曳等操作掌握鍵盤的常用操作,能夠?qū)崿F(xiàn)復(fù)制、粘貼、全選等操作掌握瀏覽器的常用操作,能夠設(shè)置瀏覽器窗口、刷新瀏覽器頁面等章節(jié)概述/Summary在第1章中我們已學(xué)習(xí)了自動(dòng)化測(cè)試的基礎(chǔ)知識(shí),初步認(rèn)識(shí)了自動(dòng)化測(cè)試,如果想要實(shí)現(xiàn)Web自動(dòng)化測(cè)試,首先需要搭建自動(dòng)化測(cè)試環(huán)境,然后編寫Web自動(dòng)化測(cè)試腳本,通過瀏覽器驅(qū)動(dòng)操作Web頁面。在編寫自動(dòng)化測(cè)試腳本的過程中,SeleniumWebDriver(網(wǎng)頁驅(qū)動(dòng)程序)扮演著重要的角色,在自動(dòng)化測(cè)試腳本中調(diào)用SeleniumWebDriver提供的方法可以實(shí)現(xiàn)多種測(cè)試操作,例如元素定位、獲取元素的常用信息等,所以我們需要學(xué)習(xí)并掌握SeleniumWebDriver在Web自動(dòng)化測(cè)試中的應(yīng)用。本章將對(duì)SeleniumWebDriver的基本應(yīng)用進(jìn)行講解。目錄/Contents0102SeleniumWebDriver簡(jiǎn)介搭建Web自動(dòng)化測(cè)試環(huán)境03元素定位簡(jiǎn)介04使用瀏覽器定位頁面元素05使用Selenium定位頁面元素目錄/Contents0607獲取元素的常用信息元素的常用操作08鼠標(biāo)的常用操作09鍵盤的常用操作10瀏覽器的常用操作SeleniumWebDriver簡(jiǎn)介2.1
先定一個(gè)小目標(biāo)!了解SeleniumWebDriver的簡(jiǎn)介,能夠闡述SeleniumWebDriver的作用2.1SeleniumWebDriver簡(jiǎn)介2.1SeleniumWebDriver簡(jiǎn)介SeleniumWebDriver(網(wǎng)頁驅(qū)動(dòng)程序)是基于Selenium2.0而設(shè)計(jì)的一套類庫(kù),該庫(kù)提供了簡(jiǎn)單、豐富且設(shè)計(jì)良好的面向?qū)ο蟮腁PI(ApplicationProgrammingInterface,應(yīng)用程序編程接口)。SeleniumWebDriver是按照Server-Client(服務(wù)器端-客戶端)的模式進(jìn)行設(shè)計(jì)的。Server即RemoteServer(遠(yuǎn)程服務(wù)器),它主要是等待Client(客戶端)發(fā)送請(qǐng)求并做出響應(yīng)。Client以HTTP請(qǐng)求的方式將自動(dòng)化測(cè)試腳本發(fā)送給Server,Server接收請(qǐng)求后執(zhí)行相應(yīng)操作并在Response(響應(yīng))中返回執(zhí)行狀態(tài)、返回值等信息。2.1SeleniumWebDriver簡(jiǎn)介SeleniumWebDriver是Python中用于實(shí)現(xiàn)Web自動(dòng)化測(cè)試的第三方庫(kù),該庫(kù)提供了定位元素方法、元素操作方法、鼠標(biāo)操作方法、鍵盤操作方法等,通過這些方法解決了Selenium1.0版本無法觸發(fā)鍵盤和鼠標(biāo)事件的問題。SeleniumWebDriver和SeleniumRC都提供了Web自動(dòng)化測(cè)試的各種語言調(diào)用接口庫(kù)。SeleniumRC使用注入JavaScript的方式來驅(qū)動(dòng)瀏覽器,此種方式的腳本執(zhí)行速度較慢。與SeleniumRC不同的是,SeleniumWebDriver是使用瀏覽器的驅(qū)動(dòng)程序來驅(qū)動(dòng)瀏覽器,其腳本執(zhí)行的速度更快,編程接口更加直觀易懂,大大提高了測(cè)試人員編寫腳本的效率。搭建Web自動(dòng)化測(cè)試環(huán)境2.2
先定一個(gè)小目標(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)境為了驗(yàn)證Python解釋器是否安裝成功,可以在cmd命令窗口中輸入“Python”命令來檢測(cè),如下圖所示。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
先定一個(gè)小目標(biāo)!掌握Selenium的安裝,能夠獨(dú)自安裝Selenium2.2.2安裝Selenium在進(jìn)行Web自動(dòng)化測(cè)試時(shí),編寫自動(dòng)化測(cè)試腳本需要用到Selenium,所以需要在PyCharm工具中安裝Selenium。在安裝Selenium時(shí)可以通過兩種方式,第一種方式是通過pip包管理工具進(jìn)行安裝,第二種方式是通過PyCharm進(jìn)行安裝。2.2.2安裝Selenium首先打開cmd命令窗口,在該窗口中輸入“pipinstallselenium”命令,如右圖所示。1.通過pip包管理工具安裝Selenium2.2.2安裝Selenium當(dāng)通過“pipinstallselenium”命令安裝Selenium時(shí),系統(tǒng)將默認(rèn)安裝當(dāng)前最新的版本。如果需要安裝指定的Selenium版本,則可以使用“pipinstallselenium==版本號(hào)”命令。2.2.2安裝Selenium需要注意的是,如果使用pip包管理工具安裝Selenium后,當(dāng)打開PyCharm進(jìn)行導(dǎo)包時(shí)提示找不到Selenium包,這說明使用pip包管理工具安裝Selenium的默認(rèn)安裝路徑和安裝Python所在的安裝路徑不一致,此種情況下可以打開PyCharm,單擊菜單欄中的“File→Settings”選項(xiàng),會(huì)進(jìn)入“Settings”對(duì)話框,在該對(duì)話框的右側(cè)的“PythonInterpreter”處將路徑修改為Python所在的安裝路徑即可。注意2.2.2安裝Selenium通過PyCharm安裝Selenium的具體操作過程如下圖所示。2.通過PyCharm安裝Selenium2.2.3安裝瀏覽器驅(qū)動(dòng)
先定一個(gè)小目標(biāo)!掌握瀏覽器驅(qū)動(dòng)的安裝,能夠獨(dú)自安裝瀏覽器驅(qū)動(dòng)2.2.3安裝瀏覽器驅(qū)動(dòng)步驟一:查看Chrome版本信息首先單擊Chrome瀏覽器右上角的
,然后選擇“幫助→關(guān)于GoogleChrome”選項(xiàng),會(huì)彈出一個(gè)“關(guān)于Chrome”頁面,在該頁面中可以查看Chrome的版本信息。2.2.3安裝瀏覽器驅(qū)動(dòng)步驟二:下載Chrome驅(qū)動(dòng)訪問Chrome瀏覽器驅(qū)動(dòng)的官方網(wǎng)站,可以根據(jù)自己計(jì)算機(jī)上的Chrome瀏覽器版本下載對(duì)應(yīng)的瀏覽器驅(qū)動(dòng)版本,如下圖所示。2.2.3安裝瀏覽器驅(qū)動(dòng)需要注意的是,如果Chrome瀏覽器的版本為92.0.4515.159,在Chrome瀏覽器驅(qū)動(dòng)頁面中找不到相同版本的瀏覽器驅(qū)動(dòng),可以找近似的版本驅(qū)動(dòng),例如,92.0.4515.107、92.0.4515.108等。注意2.2.3安裝瀏覽器驅(qū)動(dòng)當(dāng)成功下載瀏覽器驅(qū)動(dòng)安裝包后,需要將瀏覽器驅(qū)動(dòng)安裝包解壓到Python的安裝目錄中,如下圖所示。2.2.3安裝瀏覽器驅(qū)動(dòng)需要注意的是,在網(wǎng)絡(luò)連接正常的情況下,瀏覽器默認(rèn)會(huì)自動(dòng)更新為最新版本,此時(shí)瀏覽器版本與瀏覽器驅(qū)動(dòng)版本就會(huì)出現(xiàn)不一致的問題,當(dāng)運(yùn)行自動(dòng)化測(cè)試腳本代碼時(shí),程序會(huì)提示瀏覽器驅(qū)動(dòng)版本不支持當(dāng)前版本的瀏覽器。為了避免這個(gè)問題的出現(xiàn),安裝好瀏覽器后,需要手動(dòng)關(guān)閉瀏覽器的自動(dòng)更新功能。注意2.2.3安裝瀏覽器驅(qū)動(dòng)首先按下快捷鍵“Win+R”,打開運(yùn)行對(duì)話框,然后在該對(duì)話框中輸入“taskschd.msc”,單擊“確定”按鈕,此時(shí)會(huì)“打開任務(wù)計(jì)劃程序”窗口,在該窗口中選中名稱為“GoogleUpdateTaskUserS...”的條目,右擊選擇“禁用”選項(xiàng),如下圖所示。元素定位簡(jiǎn)介2.32.3元素定位簡(jiǎn)介
先定一個(gè)小目標(biāo)!了解元素定位的簡(jiǎn)介,能夠闡述元素定位的定義2.3元素定位簡(jiǎn)介測(cè)試Web項(xiàng)目時(shí),其實(shí)是對(duì)項(xiàng)目中的每個(gè)網(wǎng)頁進(jìn)行測(cè)試的過程。網(wǎng)頁是由文本、圖像、按鈕、超鏈接等各類視覺元素組成的,測(cè)試人員需要通過肉眼觀察網(wǎng)頁中的元素然后進(jìn)行功能驗(yàn)證。但是在自動(dòng)化測(cè)試的過程中,自動(dòng)化測(cè)試工具是不能進(jìn)行人為觀察的,只有讓自動(dòng)化測(cè)試工具準(zhǔn)確地定位到頁面元素才能進(jìn)行相關(guān)的測(cè)試操作,因此需要學(xué)習(xí)元素定位。2.3元素定位簡(jiǎn)介元素定位是通過元素信息或元素層級(jí)結(jié)構(gòu)來定位元素的。SeleniumWebDriver根據(jù)網(wǎng)頁中頁面元素?fù)碛胁煌臉?biāo)簽名和屬性值等特征來定位不同的頁面元素,當(dāng)成功定位到頁面元素后即可對(duì)頁面元素進(jìn)行操作。Web頁面是由CSS、JavaScript等腳本語言開發(fā)的,可以通過查看Web頁面的源文件找到頁面元素的標(biāo)簽,該標(biāo)簽的語法格式如下。<標(biāo)簽名屬性名1="屬性值1"屬性名2="屬性值2">文本</標(biāo)簽名>上述格式中的屬性名可以是id、name、class等,每一個(gè)屬性名都有對(duì)應(yīng)的屬性值,而這些屬性值是在定位元素時(shí)需要獲取的元素信息。使用瀏覽器定位頁面元素2.42.4.1使用Chrome瀏覽器定位頁面元素
先定一個(gè)小目標(biāo)!掌握Chrome瀏覽器定位元素的方式,能夠靈活應(yīng)用Chrome瀏覽器定位頁面元素2.4.1使用Chrome瀏覽器定位頁面元素當(dāng)成功安裝Chrome瀏覽器時(shí),程序會(huì)默認(rèn)安裝該瀏覽器的開發(fā)者工具,通過瀏覽器的開發(fā)者工具,可以對(duì)Web頁面中的元素進(jìn)行調(diào)試和分析,同時(shí)也可以定位頁面中的元素。打開Chrome瀏覽器開發(fā)者工具的方式有兩種。通過F12快捷鍵打開。在頁面中的任意地方右擊,選擇“檢查”選項(xiàng)打開。2.4.1使用Chrome瀏覽器定位頁面元素定位頁面中某個(gè)元素的方式也有兩種。在頁面中該元素的上方右擊選擇“檢查”選項(xiàng)即可定位到該元素。打開瀏覽器開發(fā)者工具,首先單擊選擇元素的圖標(biāo)
,然后單擊要定位的元素。定位元素后,可在“Elements”中看到定位元素的id、name、class等屬性信息。2.4.1使用Chrome瀏覽器定位頁面元素下面以TPshop(開源商城)項(xiàng)目為例,按照前面所講的定位元素操作,定位該項(xiàng)目登錄頁面中的密碼框元素。密碼框元素信息如下圖所示。2.4.2使用Firefox瀏覽器定位頁面元素
先定一個(gè)小目標(biāo)!掌握Firefox瀏覽器定位元素的方式,能夠靈活應(yīng)用Firefox瀏覽器定位頁面元素2.4.2使用Firefox瀏覽器定位頁面元素下面以TPshop(開源商城)項(xiàng)目為例,使用Firefox瀏覽器來定位登錄頁面中的“登錄”按鈕元素。首先按下“F12”鍵打開Firefox瀏覽器開發(fā)者工具,此時(shí)在“登錄”按鈕上方右擊選擇“檢查”選項(xiàng),就可以定位到“登錄”按鈕,并看到該按鈕的相關(guān)信息,如下圖所示。使用Selenium定位頁面元素2.52.5.1單個(gè)元素的定位
先定一個(gè)小目標(biāo)!掌握Selenium定位元素的方式,能夠定位單個(gè)元素2.5.1單個(gè)元素的定位在SeleniumWebDriver中提供了8種元素定位的方式,分別是id定位、name定位、classname定位、tagname定位、linktext定位、partiallinktext定位、xpath定位和css定位。下面將分別介紹使用這8種元素定位的方式對(duì)單個(gè)元素進(jìn)行定位。2.5.1單個(gè)元素的定位id定位是通過元素的id屬性值來定位元素。由于在HTML頁面中id屬性值一般不會(huì)重復(fù),所以很少有根據(jù)id定位多個(gè)元素的情況,通常使用id定位單個(gè)元素。使用id定位元素的前提條件是元素中必須有id屬性名。在程序中根據(jù)元素的id屬性值定位元素時(shí),可以調(diào)用find_element_by_id()方法,該方法的語法格式如下。find_element_by_id(id)#參數(shù)id表示元素在HTML頁面中的id屬性值1.id定位2.5.1單個(gè)元素的定位name定位是通過元素的name屬性值來定位元素。由于在HTML頁面中,name屬性值是可以重復(fù)的,所以在使用name定位元素時(shí)就容易出現(xiàn)定位不準(zhǔn)確的情況。如果HTML頁面中存在多個(gè)重復(fù)的name屬性值,可以選擇8種元素定位方法中的其他方法來定位元素。使用name定位元素的前提條件是元素中必須有name屬性名。find_element_by_name(name)#參數(shù)name表示元素在HTML頁面中的name屬性值在程序中根據(jù)元素的name屬性值定位元素時(shí),可以調(diào)用find_element_by_name()方法,該方法的語法格式如下。2.name定位2.5.1單個(gè)元素的定位classname定位是通過元素的class屬性值來定位元素。在HTML頁面中,class屬性主要用于渲染頁面的樣式。如果使用classname定位元素,當(dāng)一個(gè)HTML頁面中的class屬性值有多個(gè)時(shí),選擇其中一個(gè)即可。使用classname定位元素的前提條件是元素中必須有class屬性名。find_element_by_class_name(name)#參數(shù)name表示元素在HTML頁面中的class屬性值在程序中根據(jù)元素的classname屬性值定位元素時(shí),可以調(diào)用find_element_by_class_name()方法,該方法的語法格式如下。3.classname定位2.5.1單個(gè)元素的定位tagname定位是通過元素的標(biāo)簽名來定位元素。HTML頁面由多種不同的標(biāo)簽組成,一個(gè)頁面中的某個(gè)標(biāo)簽也會(huì)出現(xiàn)多個(gè),如果定位到多個(gè)相同的標(biāo)簽名,則默認(rèn)只會(huì)定位第一個(gè)標(biāo)簽,所以在使用tagname定位元素時(shí)無法精確定位,一般很少使用這個(gè)方法。find_element_by_tag_name(name)#參數(shù)name表示元素在HTML頁面的標(biāo)簽名在程序中根據(jù)元素的tagname屬性值定位元素時(shí),可以調(diào)用find_element_by_tag_name()方法,該方法的語法格式如下。4.tagname定位2.5.1單個(gè)元素的定位linktext定位是通過超鏈接的文本內(nèi)容來定位元素,例如,<a>標(biāo)簽(超鏈接)中的文本內(nèi)容。在程序中根據(jù)超鏈接的文本內(nèi)容來定位元素時(shí),可以調(diào)用find_element_by_link_text()方法,該方法的語法格式如下。find_element_by_link_text(text)#參數(shù)text表示超鏈接的全部文本內(nèi)容5.linktext定位2.5.1單個(gè)元素的定位partiallinktext定位是通過超鏈接文本中的部分或全部?jī)?nèi)容來定位元素。partiallinktext定位與linktext定位比較類似,不同的是partiallinktext定位可以使用超鏈接文本中的部分或全部?jī)?nèi)容來定位元素,而linktext定位使用的是超鏈接文本中的全部?jī)?nèi)容來定位元素。find_element_by_partial_link_text(link_text)#參數(shù)link_text表示超鏈接文本的部分或全部?jī)?nèi)容在程序中根據(jù)超鏈接的部分或全部文本內(nèi)容來定位元素時(shí),可以調(diào)用find_element_by_partial_link_text()方法,該方法的語法格式如下。6.partiallinktext定位2.5.1單個(gè)元素的定位xpath(XMLPathLanguage的簡(jiǎn)稱)定位是基于元素的路徑定位,在程序中根據(jù)元素的路徑定位時(shí),可以調(diào)用find_element_by_xpath()方法,該方法的語法格式如下。find_element_by_xpath(xpath)#參數(shù)xpath表示元素路徑7.xpath定位2.5.1單個(gè)元素的定位絕對(duì)路徑是從最外層元素到指定元素之間所有經(jīng)過元素層級(jí)的路徑。絕對(duì)路徑的寫法是以單斜杠開頭逐級(jí)開始編寫,不能跳級(jí)。(1)xpath通過絕對(duì)路徑定位元素(2)xpath通過相對(duì)路徑定位元素相對(duì)路徑可匹配任意層級(jí)的元素,不限制元素的位置。相對(duì)路徑的寫法是以雙斜杠開頭,雙斜杠后面緊跟著元素名稱,不確定的元素名稱可以使用*代替。例如,//input或//*。2.5.1單個(gè)元素的定位xpath定位元素寫法說明//span/input[1]通過索引定位,表示選取第一個(gè)與表達(dá)式//span/input匹配的元素//span/input[last()]通過索引定位,表示選取最后一個(gè)與表達(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]通過絕對(duì)路徑定位,表示定位/html/body/input下的第一個(gè)<input>標(biāo)簽常用的xpath定位元素寫法與說明如下表所示。2.5.1單個(gè)元素的定位css定位通過css選擇器工具進(jìn)行定位。該方法比xpath定位的速度快,css語法也十分強(qiáng)大,語法比xpath簡(jiǎn)單,但是對(duì)初學(xué)者來說,學(xué)習(xí)起來稍微有點(diǎn)難度。在程序中根據(jù)css選擇器工具進(jìn)行定位時(shí),可以調(diào)用find_element_by_css_selector()方法,該方法的語法格式如下。find_element_by_css_selector(css_selector)#參數(shù)css_selector表示選擇器8.css定位2.5.1單個(gè)元素的定位常用的選擇器包括id選擇器、class選擇器、元素選擇器、屬性選擇器和層級(jí)選擇器等,其中,層級(jí)選擇器又分為父子層級(jí)選擇器和隔代層級(jí)選擇器,不同的選擇器在語法和使用方法上也會(huì)有所差異。2.5.1單個(gè)元素的定位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的元素父子層級(jí)選擇器element1>element2根據(jù)父子層級(jí)選擇,element2是element1的直接子元素,例如p[id='p1']>input,表示定位指定p元素下的直接子元素input隔代層級(jí)選擇器element1
element2根據(jù)隔代層級(jí)選擇,element2是element1的后代元素,例如p[id='p1']input,表示定位指定p元素之后的所有input元素常用的css選擇器語法格式和說明如下表所示。2.5.1單個(gè)元素的定位學(xué)習(xí)了8種常用的元素定位方式后,下面以TPshop(開源商城)項(xiàng)目為例,使用這8種常用的元素定位方式來定位該項(xiàng)目中的登錄頁面元素,具體代碼如下。fromseleniumimportwebdriverdriver=webdriver.Chrome()url="http://hm/Home/user/login.html"driver.get(url)#通過id定位手機(jī)號(hào)/郵箱輸入框元素username=driver.find_element_by_id("username").send_keys()#通過name定位密碼輸入框元素password=driver.find_element_by_name("password").send_keys("123456")#通過id定位驗(yàn)證碼輸入框元素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一組元素的定位
先定一個(gè)小目標(biāo)!掌握Selenium定位元素的方式,能夠定位一組元素2.5.2一組元素的定位當(dāng)測(cè)試的頁面上有多個(gè)元素需要操作時(shí),逐一進(jìn)行定位就會(huì)比較煩瑣,例如需要同時(shí)選擇頁面中的所有復(fù)選框,這時(shí)候可以通過一組元素進(jìn)行定位。定位單個(gè)元素的方法和定位一組元素的方法類似,區(qū)別在于,定位一組元素時(shí)需要在方法中的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ī)單擊任意一個(gè)鏈接。首頁導(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ī)獲取一個(gè)鏈接Random_selection=random.randint(0,length-1)elements[Random_selection].click()多學(xué)一招在元素定位時(shí),還可以使用find_element()方法,該方法通過By來聲明定位,并傳入對(duì)應(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)行元素定位時(shí),需要導(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()方法的底層實(shí)現(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獲取元素尺寸
先定一個(gè)小目標(biāo)!掌握獲取元素常用信息方法的使用,能夠獲取元素尺寸在Web自動(dòng)化測(cè)試過程中,通過SeleniumWebDriver提供的size屬性可獲取元素尺寸,該屬性的返回值是元素的高度和寬度。需要注意的是,在程序中使用size屬性時(shí),后邊沒有小括號(hào),直接使用.size的方式即可。2.6.1獲取元素尺寸搜索引擎下面以傳智教育官網(wǎng)為例,詳細(xì)介紹獲取該官網(wǎng)首頁的傳智教育圖標(biāo)元素尺寸的步驟。首先在Chrome瀏覽器中打開傳智教育官網(wǎng),按“F12”
快捷鍵,可查看傳智教育圖標(biāo)元素的實(shí)際尺寸,傳智教育官網(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獲取元素文本
先定一個(gè)小目標(biāo)!掌握獲取元素常用信息方法的使用,能夠獲取元素文本獲取元素文本時(shí)可以利用SeleniumWebDriver提供的text屬性,通過在程序中先定位到具體的元素,然后通過text屬性就可以獲取文本信息。需要注意的是,在程序中使用text屬性時(shí),后邊沒有小括號(hào),直接使用.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獲取元素屬性值
先定一個(gè)小目標(biāo)!掌握獲取元素常用信息方法的使用,能夠獲取元素屬性值在進(jìn)行Web自動(dòng)化測(cè)試時(shí),可以通過獲取元素屬性或判斷元素是否可用等方式來判斷測(cè)試用例的最終執(zhí)行結(jié)果,下面主要對(duì)元素屬性值獲取、判斷元素是否可用、判斷元素是否可見和判斷元素是否被選中進(jìn)行詳細(xì)介紹。2.6.3獲取元素屬性值搜索引擎2.6.3獲取元素屬性值在Web自動(dòng)化測(cè)試中,可以通過獲取元素的屬性值進(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自動(dòng)化測(cè)試中,有時(shí)候需要判斷頁面中的按鈕是否可以正常使用,可以通過調(diào)用is_enabled()方法來實(shí)現(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自動(dòng)化測(cè)試中,也可以通過判斷元素是否可見來進(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自動(dòng)化測(cè)試中,判斷元素是否被選中一般用于測(cè)試頁面表單中的單選框和復(fù)選框。有些頁面表單中的單選框和復(fù)選框是默認(rèn)選中的,在程序中判斷元素是否被選中可以調(diào)用is_selected()方法,該方法的語法格式如下。is_selected()4.判斷元素是否被選中2.6.3獲取元素屬性值下面以TPshop(開源商城)項(xiàng)目為例,判斷用戶注冊(cè)頁面的“我已閱讀并同意《TPshop網(wǎng)服務(wù)協(xié)議》”復(fù)選框元素是否被選中。如果該復(fù)選框元素被選中,返回結(jié)果為“True”,否則返回“False“。TPshop開源商城用戶注冊(cè)頁面如下圖所示。2.6.3獲取元素屬性值下面調(diào)用is_selected()方法判斷用戶注冊(cè)頁面的“我已閱讀并同意《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元素的常用操作
先定一個(gè)小目標(biāo)!掌握元素的常用操作,能夠?qū)崿F(xiàn)測(cè)試頁面的輸入、清除等操作2.7元素的常用操作當(dāng)頁面中遇到想要輸入元素內(nèi)容的情況時(shí),可以在自動(dòng)化測(cè)試的腳本代碼中調(diào)用send_keys()方法來自動(dòng)輸入元素的內(nèi)容,該方法的語法格式如下。send_keys(*value)#參數(shù)*value表示輸入的內(nèi)容1.輸入元素內(nèi)容2.7元素的常用操作在Web自動(dòng)化測(cè)試的過程中,如果想要清空頁面的輸入框或搜索框中的信息,可以通過在自動(dòng)化測(cè)試的腳本代碼中調(diào)用clear()方法來實(shí)現(xiàn),該方法的語法格式如下。2.清除元素內(nèi)容clear()2.7元素的常用操作在Web自動(dòng)化測(cè)試的過程中,如果想要提交頁面中的form表單或者模擬按下“Enter”鍵提交表單,可以在自動(dòng)化測(cè)試的腳本代碼中調(diào)用submit()方法來實(shí)現(xiàn),該方法的語法格式如下。3.提交表單submit()2.7元素的常用操作下面以訪問必應(yīng)首頁為例,演示如何在必應(yīng)首頁的輸入框中輸入元素內(nèi)容、清空元素內(nèi)容和提交表單,必應(yīng)首頁如下圖所示。2.7元素的常用操作下面分別調(diào)用send_keys()方法、clear()方法和submit()方法,實(shí)現(xiàn)對(duì)輸入框的輸入、清除和提交表單操作,具體代碼如下。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("軟件測(cè)試")#提交表單input_box.submit()鼠標(biāo)的常用操作2.82.8鼠標(biāo)的常用操作
先定一個(gè)小目標(biāo)!掌握鼠標(biāo)的常用操作,能夠?qū)崿F(xiàn)鼠標(biāo)單擊、雙擊、拖動(dòng)等操作鼠標(biāo)的常用操作包括鼠標(biāo)執(zhí)行、鼠標(biāo)單擊、鼠標(biāo)雙擊、鼠標(biāo)拖曳和鼠標(biāo)懸停,SeleniumWebDriver為這些鼠標(biāo)操作提供了對(duì)應(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個(gè)參數(shù)source表示源元素,即被拖動(dòng)的元素,第2個(gè)參數(shù)target表示目標(biāo)元素move_to_element()鼠標(biāo)懸停常用的鼠標(biāo)操作方法如下表所示。2.8鼠標(biāo)的常用操作下面以京東商城首頁為例,調(diào)用move_to_element()方法實(shí)現(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)對(duì)象action=ActionChains(driver)#調(diào)用鼠標(biāo)懸停的方法action.move_to_element(house_device)#調(diào)用鼠標(biāo)執(zhí)行的方法action.perform()鍵盤的常用操作2.92.9鍵盤的常用操作
先定一個(gè)小目標(biāo)!掌握鍵盤的常用操作,能夠?qū)崿F(xiàn)復(fù)制、粘貼、全選等操作在Web自動(dòng)化測(cè)試的過程中,除了會(huì)對(duì)鼠標(biāo)進(jìn)行一些常用操作外,還會(huì)對(duì)鍵盤進(jìn)行一些常用操作,例如復(fù)制、粘貼、全選等。鍵盤的這些常用操作在SeleniumWebDriver中都有對(duì)應(yīng)的方法,這些方法都封裝在Keys類中,所以在使用這些鍵盤操作方法之前首先需要導(dǎo)入Keys類,具體代碼如下。2.9鍵盤的常用操作聚合平臺(tái)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)用常用的鍵盤操作方法實(shí)現(xiàn)刪除、全選、復(fù)制等操作,具體代碼如下。[單擊查看源碼]瀏覽器的常用操作2.102.10.1瀏覽器窗口的設(shè)置
先定一個(gè)小目標(biāo)!掌握瀏覽器的常用操作,能夠設(shè)置瀏覽器窗口2.10.1瀏覽器窗口的設(shè)置在運(yùn)行自動(dòng)化測(cè)試腳本的時(shí)候,默認(rèn)啟動(dòng)的瀏覽器窗口并不是全屏的。由于瀏覽器窗口的位置和大小會(huì)影響Web頁面的顯示效果,所以在編寫腳本進(jìn)行自動(dòng)化測(cè)試的時(shí)候需要設(shè)置瀏覽器的窗口大小。為了能夠使瀏覽器有一個(gè)良好的顯示效果,通常設(shè)置瀏覽器窗口為最大化。在SeleniumWebDriver中提供了一些方法來設(shè)置瀏覽器窗口的最大化、最小化、指定位置和指定大小。2.10.1瀏覽器窗口的設(shè)置方法說明minimize_window()將瀏覽器窗口設(shè)置為最小化maximize_window()將瀏覽器窗口設(shè)置為最大化set_window_position(x,y)將瀏覽器窗口移動(dòng)到指定位置set_window_size(width,height)將瀏覽器窗口設(shè)置為指定大小,第1個(gè)參數(shù)width用于設(shè)置窗口的寬度,第2個(gè)參數(shù)height用于設(shè)置窗口的高度set_window_rect(x=None,y=None,width=None,height=None)將瀏覽器窗口移動(dòng)到指定位置,并將瀏覽器窗口設(shè)置為指定大小設(shè)置瀏覽器窗口的常用方法如下表所示。2.10.1瀏覽器窗口的設(shè)置下面以京東商城首頁為例,調(diào)用設(shè)置瀏覽器窗口的常用方法來設(shè)置京東商城首頁的瀏覽器窗口,具體代碼如下。[單擊查看源碼]2.10.2瀏覽器的前進(jìn)與后退
先定一個(gè)小目標(biāo)!掌握瀏覽器的常用操作,能夠?qū)崿F(xiàn)瀏覽器的前進(jìn)或后退操作2.10.2瀏覽器的前進(jìn)與后退在使用瀏覽器訪問網(wǎng)頁的時(shí)候,通常會(huì)在瀏覽器的導(dǎo)航欄處單擊“前進(jìn)”或“后退”按鈕來切換瀏覽的網(wǎng)頁。如果要用代碼自動(dòng)實(shí)現(xiàn)瀏覽器“前進(jìn)”或“后退”的操作,可以調(diào)用SeleniumWebDriver提供的forward()和back()方法。在程序中可以直接調(diào)用這兩個(gè)方法,示例代碼如下。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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 提升辦學(xué)水平的高標(biāo)準(zhǔn)創(chuàng)新方案
- 保溫棉廠家采購(gòu)合同范例
- 2025年度金融風(fēng)險(xiǎn)管理培訓(xùn)及認(rèn)證服務(wù)協(xié)議
- 東莞員工公寓租賃合同范例
- 前臺(tái)接待續(xù)簽合同范例
- 兩人合伙買裝載機(jī)合同范例
- 出租商鋪協(xié)議合同范例
- 勞務(wù)公司招工合同范本
- 2025年度海運(yùn)貨物跟蹤與運(yùn)輸合同示范
- 2025版茅臺(tái)酒出口業(yè)務(wù)代理及銷售合同模板4篇
- 新版《醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范》(2024)培訓(xùn)試題及答案
- 2025年人教版數(shù)學(xué)五年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- 北師大版七年級(jí)上冊(cè)數(shù)學(xué)期末考試試題及答案
- 初中信息技術(shù)課堂中的項(xiàng)目式學(xué)習(xí)實(shí)踐研究結(jié)題報(bào)告
- 2025年初級(jí)社會(huì)工作者綜合能力全國(guó)考試題庫(kù)(含答案)
- 復(fù)工復(fù)產(chǎn)安全培訓(xùn)考試題
- 上下樓梯安全我知道安全教育課件
- 市級(jí)臨床重點(diǎn)??粕陥?bào)書
- 手術(shù)風(fēng)險(xiǎn)及醫(yī)療意外險(xiǎn)告知流程
- 《醫(yī)院重點(diǎn)??平ㄔO(shè)專項(xiàng)資金管理辦法》
評(píng)論
0/150
提交評(píng)論