




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章Selenium基礎(chǔ)方法
CATALOGUE目錄學(xué)習(xí)目標(biāo)任務(wù)情境WebDriver簡介瀏覽器操作Selenium元素定位鼠標(biāo)操作鍵盤操作對象操作獲取頁面及其元素的相關(guān)信息深刻理解WebDriver基本概念,明確其在Web自動化測試中的核心作用,奠定堅(jiān)實(shí)理論基礎(chǔ)。深入剖析WebDriver工作原理,掌握組件架構(gòu),理解各部件協(xié)同機(jī)制,構(gòu)建全面技術(shù)認(rèn)知。WebDriver架構(gòu)解析WebDriver基礎(chǔ)概念知識目標(biāo)熟練掌握WebDriverAPI,實(shí)現(xiàn)瀏覽器啟動、導(dǎo)航至指定頁面、關(guān)閉等基本控件操作,奠定自動化測試基礎(chǔ)。API基礎(chǔ)操作能夠針對Web頁面編寫簡單自動化測試腳本,模擬用戶行為,驗(yàn)證頁面功能,提升測試效率與準(zhǔn)確性。編寫測試腳本能力目標(biāo)素養(yǎng)目標(biāo)API文檔閱讀培養(yǎng)對WebDriverAPI文檔的閱讀興趣,逐步提升至深入理解水平,增強(qiáng)自主學(xué)習(xí)能力,高效解決測試中的問題。實(shí)踐提升腳本選擇適合工具通過實(shí)踐操作,鍛煉邏輯思維與編程思維,提升編寫高效、可維護(hù)測試腳本的能力,為職業(yè)發(fā)展打下堅(jiān)實(shí)基礎(chǔ)。學(xué)會評估和選擇適合項(xiàng)目需求的WebDriver實(shí)現(xiàn),培養(yǎng)決策和判斷能力,為未來的項(xiàng)目管理和工具選擇提供有力支持。小李是名軟件測試工程師,被分配到了需要進(jìn)行Web自動化測試的項(xiàng)目,他對WebDriver的跨瀏覽器支持和語言無關(guān)性感到興奮。小李的情況小李對如何有效地使用WebDriverAPI感到困惑,在研討會中提問“WebDriver聽起來非常強(qiáng)大,但我應(yīng)該如何開始使用它來編寫測試腳本呢?我需要了解哪些關(guān)鍵概念和方法?”小李的疑問任務(wù)情境4.1WebDriver簡介4.1.1WebDriver的特點(diǎn)跨瀏覽器支持WebDriver支持多種瀏覽器,如Chrome、Firefox、Safari、Edge等,使自動化測試靈活,不受瀏覽器限制。語言無關(guān)性模擬真實(shí)用戶行為雖然WebDriver本身是使用Java編寫的,但它提供了多種語言的綁定,如Python、Java、C#、Ruby等。WebDriver能夠模擬真實(shí)用戶的行為,包括鼠標(biāo)移動、鍵盤輸入、頁面滾動等,這使測試結(jié)果更加真實(shí)可靠。WebDriver是Selenium測試框架的一部分,可以與SeleniumGrid集成,實(shí)現(xiàn)分布式測試。WebDriver提供了顯式和隱式等待機(jī)制,使得腳本能夠等待某些條件滿足后再繼續(xù)執(zhí)行,提高了腳本的穩(wěn)定性。WebDriver支持CSS選擇器、XPath等多種元素定位技術(shù),使開發(fā)者能夠靈活地定位頁面元素。WebDriver能夠處理瀏覽器的多窗口和多標(biāo)簽頁,使得測試腳本能夠覆蓋更多的使用場景。WebDriver的特點(diǎn)與Selenium集成支持等待機(jī)制支持高級定位技術(shù)支持多窗口和多標(biāo)簽頁操作WebDriver概述WebDriver允許測試腳本模擬用戶在瀏覽器中的操作,包括導(dǎo)航、點(diǎn)擊、輸入文本、提交表單等。模擬用戶操作啟動瀏覽器要啟動一個(gè)新的瀏覽器實(shí)例,可以使用webdriver.Chrome()方法,這將會啟動Chrome瀏覽器的新實(shí)例。WebDriver是一個(gè)用于自動化Web應(yīng)用程序測試的API,它提供了一種簡單的方式來編寫跨瀏覽器的自動化測試腳本。4.1.2WebDriverAPI常用方法概覽WebDriverAPI常用方法概覽打開網(wǎng)頁要通過WebDriver打開指定的URL,可以使用driver.get("")方法,這將會在瀏覽器中打開指定的URL。查找元素要根據(jù)元素的ID查找元素,可以使用driver.find_element(By.ID,"element_id")方法,這將會返回第一個(gè)匹配該ID的元素。查找多個(gè)元素要查找具有相同類名的所有元素,可以使用driver.find_elements(By.CLASS_NAME,"class_name")方法,這將會返回所有匹配該類名的元素列表。WebDriverAPI常用方法概覽點(diǎn)擊元素要模擬鼠標(biāo)點(diǎn)擊操作,可以使用element.click()方法,這將會在當(dāng)前定位到的元素上執(zhí)行點(diǎn)擊操作。輸入文本提交表單要在文本框中輸入文本,可以使用element.send_keys("sometext")方法,這將會在當(dāng)前定位到的元素中輸入指定的文本。要提交表單,可以使用element.submit()方法,這將會在當(dāng)前定位到的表單元素上執(zhí)行提交操作。獲取頁面源代碼要獲取當(dāng)前頁面的HTML源代碼,可以使用source=driver.page_source方法,這將會返回當(dāng)前頁面的HTML源代碼。前進(jìn)和后退要在瀏覽器歷史中前進(jìn)和后退,分別可以使用driver.forward()和driver.back()方法,這將會在瀏覽器歷史中執(zhí)行相應(yīng)的操作。關(guān)閉瀏覽器要關(guān)閉瀏覽器窗口,可以使用driver.quit()方法,這將會關(guān)閉當(dāng)前啟動的瀏覽器窗口。WebDriverAPI常用方法概覽WebDriverAPI常用方法概覽獲取當(dāng)前URL要獲取當(dāng)前頁面的URL,可以使用current_url=driver.current_url方法,這將會返回當(dāng)前頁面的URL。獲取頁面標(biāo)題設(shè)置窗口大小要獲取當(dāng)前頁面的標(biāo)題,可以使用title=driver.title方法,這將會返回當(dāng)前頁面的標(biāo)題。要設(shè)置瀏覽器窗口的大小,可以使用driver.set_window_size(width,height)方法,這將會設(shè)置瀏覽器窗口的寬度和高度。要最大化瀏覽器窗口,可以使用driver.maximize_window()方法,這將會將瀏覽器窗口最大化。要獲取元素的屬性值,可以使用attribute=element.get_attribute("attribute_name")方法,這將會返回指定屬性的值。獲取元素屬性最大化窗口WebDriverAPI常用方法概覽4.2瀏覽器操作瀏覽器操作介紹瀏覽器操作的重要性在Web自動化測試中,瀏覽器操作是核心技能,掌握瀏覽器控制技巧對編寫高效自動化測試腳本至關(guān)重要。WebDriverAPI的方法自動化測試的基礎(chǔ)本節(jié)將詳細(xì)介紹WebDriverAPI中關(guān)于瀏覽器操作的方法,并結(jié)合實(shí)際案例指導(dǎo)讀者編寫自動化測試腳本。通過學(xué)習(xí)本節(jié),讀者將能夠在自動化測試中進(jìn)行瀏覽器的各種操作,為成為一名高效的自動化測試工程師打下堅(jiān)實(shí)的基礎(chǔ)。導(dǎo)入Selenium庫通過Selenium的webdriver模塊,我們可以創(chuàng)建一個(gè)Chrome的WebDriver實(shí)例。創(chuàng)建WebDriver實(shí)例打開測試頁面利用WebDriver實(shí)例的get()方法,我們可以指定要打開的測試頁面URL,實(shí)現(xiàn)頁面的加載和顯示。使用Python進(jìn)行Web自動化測試時(shí),需要導(dǎo)入Selenium庫,并指定使用Chrome瀏覽器。打開瀏覽器釋放資源在Web自動化測試結(jié)束后,為了確保系統(tǒng)資源的釋放,我們需要關(guān)閉瀏覽器窗口以回收資源。使用quit()方法Selenium提供了quit()方法,專門用于在測試完成后關(guān)閉瀏覽器窗口,確保系統(tǒng)資源的有效管理。關(guān)閉瀏覽器模擬瀏覽器的后退操作,back()方法用于模擬瀏覽器的后退操作,返回到瀏覽器歷史記錄中的上一個(gè)頁面。WebDriver提供了back()方法來后退到瀏覽器歷史記錄中的上一個(gè)頁面,確保測試能夠全面覆蓋各種導(dǎo)航情況。WebDriver提供back()方法后退操作模擬瀏覽器的前進(jìn)操作,前進(jìn)到瀏覽器歷史記錄中的下一個(gè)頁面,確保測試能夠全面覆蓋各種導(dǎo)航情況。forward()方法在使用forward()方法之前,需要確保瀏覽器已經(jīng)訪問了至少兩個(gè)頁面,以便可以進(jìn)行前進(jìn)和后退操作。使用條件前進(jìn)操作刷新瀏覽器頁面refresh()方法在Web自動化測試中,測試頁面在某些操作后的實(shí)時(shí)更新情況是一項(xiàng)常見的需求,例如,頁面可能通過Ajax請求異步加載數(shù)據(jù)。刷新功能的作用重新加載當(dāng)前頁面頁面通過Ajax請求異步加載數(shù)據(jù)時(shí),可以使用瀏覽器的刷新功能來重新獲取最新的頁面狀態(tài),確保測試能夠捕捉到最新的頁面狀態(tài)。refresh()方法用于模擬瀏覽器的刷新操作,重新加載當(dāng)前頁面,在使用refresh()方法時(shí),當(dāng)前頁面會像用戶點(diǎn)擊瀏覽器刷新按鈕一樣進(jìn)行刷新。在編寫自動化測試腳本之前,需確保Chrome瀏覽器驅(qū)動的路徑已正確指定,并創(chuàng)建一個(gè)WebDriver實(shí)例,指定使用Chrome瀏覽器。最大化窗口的準(zhǔn)備執(zhí)行自動化測試腳本時(shí),首先通過driver.get()方法訪問百度首頁,隨后執(zhí)行窗口的最大化操作,使用driver.maximize_window()方法。訪問百度首頁窗口最大化窗口最大化等待窗口變化生效在最大化窗口后,等待幾秒鐘以確保窗口變化生效,接著可以通過driver.fullscreen()方法將瀏覽器窗口切換到全屏模式。最小化窗口的準(zhǔn)備在等待了幾秒鐘以確保最小化操作完成后,可以再次執(zhí)行窗口最大化操作,通過driver.maximize_window()方法恢復(fù)窗口大小。切換全屏模式在切換到全屏模式后,再次等待幾秒鐘以確保變化生效,隨后可以通過driver.minimize_window()方法將瀏覽器窗口最小化到任務(wù)欄?;謴?fù)窗口大小在完成所有必要的瀏覽器窗口操作后,應(yīng)該使用driver.quit()方法關(guān)閉瀏覽器,以釋放相關(guān)資源,并確保測試環(huán)境的清潔和穩(wěn)定性。全屏模式全屏模式介紹在Web自動化測試中,有時(shí)需要模擬用戶對瀏覽器窗口的操作,如最大化、最小化和全屏;全屏模式有助于確保Web應(yīng)用程序在不同窗口狀態(tài)下的表現(xiàn)一致。切換到全屏模式要切換到全屏模式,可以使用WebDriver的fullscreen()方法。這個(gè)方法將把瀏覽器窗口切換到全屏模式,以提供用戶更沉浸式的瀏覽體驗(yàn)。全屏模式測試在編寫自動化測試腳本時(shí),需要先打開Chrome瀏覽器,并訪問百度首頁。然后,通過調(diào)用fullscreen()方法將瀏覽器窗口切換到全屏模式。全屏模式等待全屏生效在切換到全屏模式后,需要等待幾秒鐘以確保變化生效。接著,可以通過driver.minimize_window()方法將瀏覽器窗口最小化到任務(wù)欄進(jìn)行測試。最小化窗口驗(yàn)證恢復(fù)窗口繼續(xù)測試在等待了幾秒鐘以確保最小化操作完成后,可以再次執(zhí)行窗口最大化操作,通過driver.maximize_window()方法恢復(fù)窗口大小,以便繼續(xù)進(jìn)行測試。在完成所有必要的瀏覽器窗口操作后,應(yīng)該使用driver.quit()方法關(guān)閉瀏覽器,以釋放相關(guān)資源,并確保測試環(huán)境的清潔和穩(wěn)定性。最小化窗口的準(zhǔn)備在Python中,可以使用WebDriver的minimize_window()方法來最小化瀏覽器窗口。這個(gè)方法將把瀏覽器窗口最小化到任務(wù)欄,以節(jié)省屏幕空間。最小化窗口的方法編寫自動化測試腳本編寫自動化測試腳本時(shí),需要先打開Chrome瀏覽器,并訪問百度首頁。然后,通過調(diào)用minimize_window()方法將瀏覽器窗口最小化到任務(wù)欄。在Web自動化測試中,有時(shí)需要模擬用戶對瀏覽器窗口的操作,如最大化、最小化和全屏;最小化窗口可以幫助用戶隱藏不必要的瀏覽器窗口。窗口最小化窗口最小化等待最小化完成在最小化瀏覽器窗口后,需要等待幾秒鐘以確保最小化操作完成。接著,可以通過driver.fullscreen()方法將瀏覽器窗口切換到全屏模式。全屏模式測試關(guān)閉瀏覽器的重要性在等待了幾秒鐘以確保全屏模式生效后,可以通過driver.get()方法訪問不同的網(wǎng)頁進(jìn)行測試。測試完成后,應(yīng)通過driver.quit()方法關(guān)閉瀏覽器。在完成所有必要的瀏覽器窗口操作后,應(yīng)該使用driver.quit()方法關(guān)閉瀏覽器,以釋放相關(guān)資源,并確保測試環(huán)境的清潔和穩(wěn)定性。get_window_size()方法用于獲取當(dāng)前瀏覽器窗口的寬度和高度,確保頁面元素在不同分辨率下正確顯示。通過get_window_size()方法獲取當(dāng)前窗口大小,并打印出寬度和高度,以便進(jìn)行進(jìn)一步的操作或驗(yàn)證。打印窗口尺寸獲取窗口大小獲取窗口大小設(shè)置窗口大小set_window_size(width,height)方法用于設(shè)置瀏覽器窗口的寬度和高度,允許你控制頁面元素的顯示范圍。驗(yàn)證設(shè)置獲取當(dāng)前窗口大小,然后設(shè)置一個(gè)新的窗口大小,并再次獲取以驗(yàn)證設(shè)置是否成功,確保頁面元素在新窗口大小下正確顯示。設(shè)置窗口大小在Web自動化測試中,控制瀏覽器窗口的位置有時(shí)對于確保測試的準(zhǔn)確性是必要的,尤其是在進(jìn)行多窗口測試或需要特定窗口布局的場景中。獲取當(dāng)前位置WebDriver提供了方法來獲取和設(shè)置瀏覽器窗口的位置,get_window_position()方法可獲取當(dāng)前瀏覽器窗口左上角的x和y坐標(biāo)。WebDriver定位方法獲取窗口位置除了獲取窗口位置外,WebDriver還提供了set_window_position(x,y)方法,用于設(shè)置瀏覽器窗口左上角到屏幕左上角的水平和垂直距離。設(shè)置窗口位置編寫一個(gè)自動化測試腳本,打開Chrome瀏覽器,訪問百度首頁,獲取當(dāng)前窗口位置,設(shè)置新位置,并驗(yàn)證設(shè)置是否成功。驗(yàn)證設(shè)置是否成功設(shè)置窗口位置瀏覽器操作方法和屬性瀏覽器的打開與關(guān)閉driver.get(url)打開指定的URL;driver.quit()關(guān)閉瀏覽器窗口。訪問網(wǎng)頁driver.get()方法用于加載并訪問指定的Web頁面,是Web自動化測試中的基本操作。刷新頁面driver.refresh()方法用于刷新當(dāng)前頁面,與用戶在瀏覽器中點(diǎn)擊刷新按鈕效果相同。瀏覽器操作方法和屬性窗口大小控制driver.maximize_window()最大化瀏覽器窗口;driver.minimize_window()最小化瀏覽器窗口。全屏模式窗口大小的獲取和設(shè)置driver.fullscreen()方法可以將瀏覽器窗口切換到全屏模式,以提供更沉浸式的瀏覽體驗(yàn)。driver.get_window_size()返回當(dāng)前窗口的寬度和高度;driver.set_window_size(width,height)設(shè)置窗口寬度和高度。driver.get_window_position()獲取窗口的當(dāng)前位置;driver.set_window_position(x,y)設(shè)置窗口的新位置。除了前進(jìn)和后退,我們還可以使用driver.get()方法來導(dǎo)航到新的頁面。driver.back()后退到歷史記錄中的上一個(gè)頁面;driver.forward()前進(jìn)到歷史記錄中的下一個(gè)頁面。driver.title獲取當(dāng)前頁面的標(biāo)題;driver.current_url獲取當(dāng)前頁面的URL。瀏覽器操作方法和屬性窗口位置的獲取和設(shè)置頁面導(dǎo)航瀏覽器前進(jìn)和后退瀏覽器屬性4.3Selenium元素定位預(yù)備知識自動化測試的元素定位小張同學(xué)對自動化測試驅(qū)動瀏覽器定位網(wǎng)頁元素好奇;在預(yù)習(xí)前,他向老師提問自動化測試如何定位元素。Web測試與元素操作百度首頁含輸入框、按鈕等;自動化測試模擬鼠標(biāo)鍵盤操作,如單擊、輸入;操作前需定位元素。Selenium元素定位學(xué)習(xí)我們和小張同學(xué)一起正式開啟Selenium元素定位的學(xué)習(xí)之旅,首先來觀察百度首頁,圖4-1所示。元素定位與Webdriver自動化工具無法像測試人員一樣定位頁面元素,它根據(jù)HTML代碼層級、標(biāo)簽名和屬性值來準(zhǔn)確定位元素。4.3.1頁面元素定位方法概覽Selenium4提供了多種元素定位方法,包括id、name、tag、class、link_text、partiallink、XPath和CSS_selector。在Python中,這些方法對應(yīng)的實(shí)現(xiàn)方式,如通過driver.find_element(By.ID,"element_id")來實(shí)現(xiàn)元素的定位。定位方法示例Selenium定位方法Selenium元素定位方法HTML結(jié)構(gòu)特征標(biāo)簽對組成HTML結(jié)構(gòu)由標(biāo)簽對組成,如<html></html>、<body></body>等,標(biāo)簽名如html、div等標(biāo)識了不同的元素。標(biāo)簽屬性標(biāo)簽層級關(guān)系標(biāo)簽擁有各種屬性,如<divid="head"class="s_down">中的id和class,這些屬性用于唯一標(biāo)識元素或定義其樣式和功能。HTML元素按層級組織,父標(biāo)簽包含子標(biāo)簽,如<html><body><div><form><input/></form></div></body></html>中。在Web測試中,定位元素可通過其屬性(如姓名、手機(jī)號、身份證號)或位置(如地址)進(jìn)行精確查找。元素定位方式XPath和CSS選擇器通過層級關(guān)系和屬性選擇元素,實(shí)現(xiàn)精確的定位,支持復(fù)雜查詢和動態(tài)內(nèi)容處理。XPath與CSS定位定位方法基礎(chǔ)4.3.2使用id定位元素在Selenium中,使用元素的id進(jìn)行定位是最直接和快速的方法之一,元素的id通常在HTML中是唯一的,這使通過id定位成為查找頁面元素的一個(gè)非常有效的方式。Selenium與ID定位編寫自動化測試腳本,打開Chrome瀏覽器,訪問百度首頁,使用id定位搜索框,執(zhí)行輸入文本操作,展示如何在Python中使用Selenium4通過元素的id進(jìn)行定位。自動化測試腳本示例使用id定位元素4.3.3使用name定位元素使用name定位元素NAME定位元素在Web頁面中,name通常用于表單元素,如輸入框和按鈕;盡管name在一個(gè)頁面上可以不是唯一的,但使用name進(jìn)行元素定位是一種常見的實(shí)踐。NAME定位常見實(shí)踐當(dāng)頁面上有多個(gè)相同name的元素時(shí),使用name進(jìn)行元素定位是一種常見的實(shí)踐;find_element(By.NAME,element_name)用于查找單個(gè)元素。NAME定位元素列表當(dāng)頁面上有多個(gè)具有相同name的元素時(shí),find_elements(By.NAME,element_name)將返回所有匹配的元素列表,用于進(jìn)一步操作或處理。4.3.4使用classname定位元素使用classname定位元素ClassName定位元素在HTML中,class常用于標(biāo)識一組具有相同樣式或功能的元素;Selenium允許我們通過元素的classname來查找元素。find_element方法定位搜索框元素find_element(By.CLASS_NAME,class_name)方法用于通過元素的classname來查找元素。編寫自動化測試腳本,訪問百度首頁,使用classname定位搜索框元素,并執(zhí)行輸入文本操作。4.3.5使用tagname定位元素TagName定位元素訪問百度首頁,定位所有包含input標(biāo)簽的元素,對第一個(gè)input元素執(zhí)行輸入文本操作。Python參考代碼注意事項(xiàng)使用tagname定位元素時(shí),需要注意的是,它將會匹配所有具有指定標(biāo)簽名的元素,而不僅僅是一個(gè)。每個(gè)HTML元素都有一個(gè)標(biāo)簽名,我們可以通過標(biāo)簽名來查找頁面上所有具有該標(biāo)簽的元素。使用tagname定位元素
4.3.6使用全鏈接的文字定位元素通過鏈接的完整文本內(nèi)容LINK_TEXT來定位鏈接元素,確保文本完全匹配。利用Python的WebDriver庫,編寫代碼以定位并點(diǎn)擊頁面上的特定鏈接文本。Python參考代碼LINK_TEXT定位鏈接使用全鏈接的文字定位元素
4.3.6使用部分鏈接的文字定位元素部分鏈接文字定位與全鏈接文字定位類似,但這里我們可以使用鏈接文本的一部分來定位元素,適用于部分匹配的場景。示例代碼Python參考代碼中,我們利用WebDriver的By.PARTIAL_LINK_TEXT方法,成功定位并點(diǎn)擊了包含部分文本“Sign”的鏈接元素。使用部分鏈接文字定位元素
4.3.8使用XPath定位元素XPath是一種在XML文檔中查找信息的語言,它也適用于HTML文檔;XPath表達(dá)式的編寫方法在網(wǎng)頁元素定位中至關(guān)重要。XPath概述XPath定位準(zhǔn)確且靈活,適用于各種復(fù)雜場景,如定位具有特定屬性、文本或?qū)蛹壍脑?,是Web自動化測試中的關(guān)鍵技能。XPath定位優(yōu)勢XPath定位元素概述XPath常見方法示例絕對定位從文檔的根節(jié)點(diǎn)開始,使用正斜杠(/)表示;如`/html/body/div`表示從根節(jié)點(diǎn)依次選擇html、body和div元素。相對定位元素屬性定位相對定位從當(dāng)前節(jié)點(diǎn)開始,使用雙斜杠(//)表示;如`//div[@class='footer']`表示選擇任意深度下類名為footer的div元素。使用方括號([])來指定元素的屬性和屬性值;如`//input[@type='text']`表示選擇所有類型為text的input元素。XPath常見方法示例層級與屬性結(jié)合定位結(jié)合層級選擇和屬性選擇精確定位元素;如`//div[@class='container']//input[@type='text']`表示選擇類名為container的div元素內(nèi)部所有類型為text的input元素。謂語表達(dá)式進(jìn)行條件定位謂語表達(dá)式允許用戶根據(jù)特定條件來過濾元素;如`//a[contains(text(),'SignIn')]`表示選擇所有包含文本SignIn的鏈接元素。選擇特定位置的元素使用索引來選擇特定位置的元素,索引從1開始;如`//div[2]`表示選擇第二個(gè)div元素。軸選擇器如parent::、child::、ancestor::等,允許用戶根據(jù)節(jié)點(diǎn)之間的關(guān)系來選擇元素;如`.parent::div`表示選擇當(dāng)前元素的父div元素。通配符可以匹配任何元素節(jié)點(diǎn);如//*[contains(@href,'example')]表示選擇所有包含href屬性且屬性值中包含example的元素。使用text()函數(shù)選擇元素的文本節(jié)點(diǎn);如`//div[text()='Submit']`表示選擇包含文本Submit的div元素。使用邏輯運(yùn)算符and、or等結(jié)合多個(gè)條件;如`//a[@hrefandcontains(@href,'example')]`表示選擇所有href屬性存在且包含example的鏈接元素。XPath常見方法示例使用軸選擇器使用通配符文本節(jié)點(diǎn)選擇結(jié)合多個(gè)條件XPath絕對定位示例:從根節(jié)點(diǎn)開始,逐層選擇html、body和div元素。XPath相對定位示例:從當(dāng)前節(jié)點(diǎn)開始,選擇任意深度下類名為footer的div元素。XPath屬性定位示例:利用方括號指定type屬性為text的input元素。XPath層級與屬性結(jié)合定位:在類名為container的div元素內(nèi),查找所有type為text的input元素。XPath謂語表達(dá)式定位:選取所有包含'SignIn'文本的鏈接元素。XPath特定位置選擇:直接選取文檔中第二個(gè)div元素,索引從1開始。XPath軸選擇器應(yīng)用:使用軸選擇器選擇當(dāng)前元素的父div元素。XPath文本節(jié)點(diǎn)選?。壕_選取包含特定文本(如'Submit')的div元素。XPath通配符使用:匹配所有包含href屬性且值含example的元素。XPath多條件結(jié)合:結(jié)合多個(gè)條件,如href屬性和example字符串,精確選取鏈接元素。XPath定位元素的代碼示例
4.3.9使用CSS定位元素CSS選擇器是一種在網(wǎng)頁中選取和應(yīng)用樣式到HTML元素的語言,在Web自動化測試中,CSS選擇器同樣被用于定位頁面元素。CSS選擇器種類繁多,包括元素選擇器、類選擇器、ID選擇器、屬性選擇器、后代選擇器、子選擇器、兄弟選擇器、偽類選擇器等。選擇器種類CSS選擇器介紹CSS選擇器基礎(chǔ)CSS選擇器語法元素選擇器直接使用元素的標(biāo)簽名作為選擇器,如div、p、span等,可以用于選取頁面中特定的HTML元素。類選擇器ID選擇器使用點(diǎn).加上類名來選擇具有該類的元素,如.header,可以用于選取所有具有特定類的HTML元素。使用井號(#)加上ID來選擇頁面中具有該ID的唯一元素,如#main-content,確保只選取一個(gè)特定的元素。屬性選擇器使用空格來表示后代選擇器,如divp,表示選擇div元素內(nèi)的所有p元素,可用于選取特定元素的后代。后代選擇器子選擇器使用大于號>來選擇直接子元素,如ul>li,表示選擇ul元素的直接子li元素,可用于選取特定元素的直接后代。使用方括號([])來根據(jù)屬性或?qū)傩灾颠x擇元素,如[type="text"],表示選擇所有類型為text的輸入元素。CSS選擇器語法CSS選擇器語法兄弟選擇器使用加號(+)選擇緊隨其兄弟元素之后的元素,如li+li,表示選擇一個(gè)li元素后面的第一個(gè)兄弟li元素。偽類選擇器偽元素選擇器用于選擇處于特定狀態(tài)的元素,如:hover、:active、:first-child等,可用于選取特定狀態(tài)下的HTML元素。用于選擇元素的特定部分,如::before、::after,可用于選取HTML文檔中特定元素的特定部分。CSS選擇器語法組合選擇器結(jié)合使用以上選擇器來創(chuàng)建更具體的選擇器,如#main-content.header,可用于選取特定頁面結(jié)構(gòu)和樣式的HTML元素。通配符使用星號(*)作為通配符,可以匹配任何元素,如*[role="button"],可用于選取所有具有特定屬性的HTML元素。屬性包含選擇器使用*=來選擇包含特定值的屬性,如a[href*="example"],可用于選取所有包含特定屬性值的HTML元素。123使用=來選擇屬性值以特定值開始的元素,如input[type^="text"],可用于選取所有以特定屬性值開始的HTML元素。屬性開始選擇器使用$=來選擇屬性值以特定值結(jié)束的元素,如a[href$=".pdf"],可用于選取所有以特定屬性值結(jié)束的HTML元素。屬性結(jié)束選擇器使用=來選擇屬性值匹配特定正則表達(dá)式的元素,如a[href~="printable"],可用于選取所有符合特定正則表達(dá)式的HTML元素。屬性正則表達(dá)式選擇器CSS選擇器語法通過class定位元素find_element(By.CSS_SELECTOR,".s_ipt")和find_element(By.CSS_SELECTOR,".s_btn")用于在CSS中定位元素,點(diǎn)號(.)表示通過class來定位元素。通過id定位元素在CSS中,井號(#)用于表示通過ID來定位元素,如find_element(By.CSS_SELECTOR,"#kw")和find_element(By.CSS_SELECTOR,"#su")所示。通過標(biāo)簽名定位元素在CSS中,標(biāo)簽名用于定位元素時(shí)不需要任何符號標(biāo)識,直接使用標(biāo)簽名即可,如find_element(By.CSS_SELECTOR,"input")所示。CSS定位方法示例CSS定位方法示例通過標(biāo)簽層級關(guān)系定位元素find_element(By.CSS_SELECTOR,"span>input")表示定位span標(biāo)簽內(nèi)的input標(biāo)簽子元素,用于基于父元素的標(biāo)簽名來精確選擇子元素。通過屬性定位元素組合定位元素在CSS中,可以使用元素的任意屬性定位,如find_element(By.CSS_SELECTOR,"[autocomplete=off]")和find_element(By.CSS_SELECTOR,'[type="submit"]')。把定位策略組合起來使用,如find_element(By.CSS_SELECTOR,"form.fm>span>input.s_ipt")和find_element(By.CSS_SELECTOR,"form#form>span>input#kw")。
4.3.10Selenium4的相對定位器RelativeLocators介紹相對定位器特別適用于那些難以直接定位的元素,但它們相對于頁面上其他容易定位的元素的位置是已知的。適用于難以定位元素使用方法相對定位器使用locate_with()方法和表示位置關(guān)系的方法配合使用,從而能夠精確地定位到目標(biāo)元素。Selenium4引入了相對定位器,允許我們通過元素的視覺特征來定位,而不僅僅是傳統(tǒng)的屬性或文本。相對定位器基礎(chǔ)above():定位在指定元素上方的元素,email_locator=locate_with(By.TAG_NAME,"input").above({By.ID:"password"})below():定位在指定元素下方的元素,submit_locator=locate_with(By.TAG_NAME,"button").below({By.ID:"email"})to-left-of():定位在指定元素左側(cè)的元素,cancel_locator=locate_with(By.TAG_NAME,"button").to_left_of({By.ID:"submit"})to-right-of():定位在指定元素右側(cè)的元素,submit_locator=locate_with(By.TAG_NAME,"button").to_right_of({By.ID:"cancel"})near():定位在指定元素附近(默認(rèn)50像素內(nèi))的元素,email_locator=locate_with(By.TAG_NAME,"input").near({By.ID:"lbl-email"})位置關(guān)系方法相對定位器應(yīng)用示例覆蓋元素定位在網(wǎng)頁測試中,常遇到按鈕被其他元素覆蓋的情況,這使得直接定位按鈕變得困難。Selenium4的相對定位器Python參考代碼使用Selenium4的相對定位器,通過指定元素的位置關(guān)系,可以輕松定位被覆蓋的按鈕。從selenium導(dǎo)入webdriver、By、WebDriverWait、expected_conditionsasEC、locate_with用于實(shí)現(xiàn)相對定位。4.4鼠標(biāo)操作4.4.1WebDriver鼠標(biāo)常用操作WebDriver鼠標(biāo)常用操作ActionChains類ActionChains是執(zhí)行鼠標(biāo)和鍵盤操作的主要類。通過這個(gè)類,我們可以創(chuàng)建一系列動作,然后按順序執(zhí)行它們。鼠標(biāo)點(diǎn)擊鼠標(biāo)懸停click()方法用于模擬鼠標(biāo)點(diǎn)擊操作。雙擊,double_click()方法用于模擬鼠標(biāo)雙擊操作。move_to_element()方法用于模擬鼠標(biāo)移動到指定元素上,實(shí)現(xiàn)懸停效果。上下文菜單操作context_click()方法用于模擬鼠標(biāo)右擊,觸發(fā)上下文菜單。這些方法可以單獨(dú)使用,也可以組合使用來模擬更復(fù)雜的用戶交互。鼠標(biāo)移動move_by_offset()方法允許將鼠標(biāo)從當(dāng)前位置移動指定的x和y偏移量。move_to_element_with_offset()方法用于將鼠標(biāo)移動到元素的指定位置。鼠標(biāo)滾輪scroll()方法可以模擬鼠標(biāo)滾輪滾動,接收滾動量作為參數(shù)。執(zhí)行動作序列,perform()方法用于執(zhí)行所有通過ActionChains類構(gòu)建的動作序列。鼠標(biāo)拖曳先使用click_and_hold()方法模擬按下鼠標(biāo)按鍵不放的操作,再使用move_by_offset()或move_to_element()來拖動,最后使用release()方法釋放鼠標(biāo)按鈕完成拖曳。WebDriver鼠標(biāo)常用操作4.4.2內(nèi)置鼠標(biāo)操作包內(nèi)置鼠標(biāo)操作包ActionChains類ActionChains是執(zhí)行鼠標(biāo)和鍵盤操作的主要類。通過這個(gè)類,可以創(chuàng)建一系列動作,然后按順序執(zhí)行它們。鼠標(biāo)點(diǎn)擊鼠標(biāo)懸停click()方法用于模擬鼠標(biāo)點(diǎn)擊操作。雙擊,double_click()方法用于模擬鼠標(biāo)雙擊操作。move_to_element()方法用于模擬鼠標(biāo)移動到指定元素上,實(shí)現(xiàn)懸停效果。上下文菜單操作context_click()方法用于模擬鼠標(biāo)右擊,觸發(fā)上下文菜單。這些方法可以單獨(dú)使用,也可以組合使用來模擬更復(fù)雜的用戶交互。鼠標(biāo)移動move_by_offset()方法允許將鼠標(biāo)從當(dāng)前位置移動指定的x和y偏移量。move_to_element_with_offset()方法用于將鼠標(biāo)移動到元素的指定位置。鼠標(biāo)滾輪scroll()方法可以模擬鼠標(biāo)滾輪滾動,接收滾動量作為參數(shù)。執(zhí)行動作序列,perform()方法用于執(zhí)行所有通過ActionChains類構(gòu)建的動作序列。鼠標(biāo)拖曳先使用click_and_hold()方法模擬按下鼠標(biāo)按鍵不放的操作,再使用move_by_offset()或move_to_element()來拖動,最后使用release()方法釋放鼠標(biāo)按鈕完成拖曳。內(nèi)置鼠標(biāo)操作包4.4.3鼠標(biāo)懸停操作用于模擬用戶將鼠標(biāo)懸停在某個(gè)元素上的行為,這在測試懸停顯示菜單或工具提示時(shí)非常有用。我們需要測試百度首頁上的下拉菜單,該菜單僅在鼠標(biāo)懸停在菜單按鈕上時(shí)顯示。百度下拉菜單測試鼠標(biāo)懸停操作鼠標(biāo)懸停操作4.4.4鼠標(biāo)拖曳操作鼠標(biāo)拖曳操作是模擬用戶將一個(gè)元素拖曳到另一個(gè)位置或另一個(gè)元素上的行為。拖曳操作鼠標(biāo)拖曳操作在測試具有拖放功能的網(wǎng)頁時(shí)非常有用,如拖曳排序、改變元素位置等場景。拖曳應(yīng)用鼠標(biāo)拖曳操作4.4.5其他鼠標(biāo)操作鼠標(biāo)滾動除了基本的點(diǎn)擊、雙擊、懸停和拖曳操作外,WebDriver還提供了一些其他的鼠標(biāo)操作,以模擬更復(fù)雜的用戶交互行為。精確移動假設(shè)我們需要測試一個(gè)具有滾動條的網(wǎng)頁,需要模擬鼠標(biāo)滾動到頁面底部的操作。參考代碼(略)。其他鼠標(biāo)操作4.5鍵盤操作訪問百度搜索頁面使用driver.get()方法,我們訪問了百度搜索頁面,并準(zhǔn)備進(jìn)行搜索操作。清除預(yù)填充文本為了確保不影響之前的搜索歷史,我們使用了search_box.clear()方法清除搜索框中的預(yù)填充文本?;剀囨I進(jìn)行搜索再次使用send_keys()方法,我們模擬按下了回車鍵,從而觸發(fā)了搜索操作。創(chuàng)建WebDriver實(shí)例通過指定Chrome瀏覽器的可執(zhí)行文件路徑,創(chuàng)建了一個(gè)WebDriver實(shí)例。定位到搜索框元素通過driver.find_element()方法,我們定位到了百度搜索框的元素。輸入關(guān)鍵詞通過search_box.send_keys()方法,我們輸入了關(guān)鍵詞“SeleniumWebDriver”到搜索框中。010203040506模擬鍵盤進(jìn)行文字輸入鍵盤常用組合鍵操作復(fù)制粘貼操作在百度首頁的文本輸入框中,使用Ctrl+C組合鍵進(jìn)行復(fù)制、使用Ctrl+V組合鍵進(jìn)行粘貼。刪除多余字符輸入空格和單詞在文本輸入框中,使用Backspace鍵刪除多輸入的字符。在文本輸入框中,先輸入一個(gè)空格,再輸入“教程”這個(gè)單詞。使用Ctrl+A組合鍵全選輸入框中的內(nèi)容,以便進(jìn)行其他操作如剪切或復(fù)制。使用Ctrl+V組合鍵將剪切或復(fù)制的內(nèi)容粘貼到輸入框中。使用Ctrl+X組合鍵剪切輸入框中的內(nèi)容,以便進(jìn)行粘貼操作?;剀囨I通常用于模擬用戶點(diǎn)擊操作,這里用它來代替對搜索按鈕的單擊。鍵盤常用組合鍵操作全選內(nèi)容粘貼內(nèi)容剪切內(nèi)容回車鍵代替單擊在自動化測試中,模擬鍵盤輸入是常見的需求,send_keys()方法可以用來模擬鍵盤輸入。模擬鍵盤輸入鍵盤組合鍵操作可以模擬更復(fù)雜的用戶輸入行為,如使用Ctrl+C組合鍵進(jìn)行復(fù)制等。鍵盤組合鍵操作總結(jié)4.6對象操作單擊對象鏈接網(wǎng)頁中的鏈接可以被點(diǎn)擊以導(dǎo)航到另一個(gè)頁面或頁面內(nèi)的某個(gè)部分。按鈕復(fù)選框按鈕是Web表單中常見的元素,用于接受用戶輸入或觸發(fā)特定操作。通過點(diǎn)擊復(fù)選框,可以選中或取消選中一個(gè)選項(xiàng),通常用于多選列表。單擊對象下拉菜單點(diǎn)擊下拉菜單可以展開并選擇其中一個(gè)選項(xiàng),用于選擇輸入或設(shè)置。標(biāo)簽頁在使用標(biāo)簽頁的界面中,點(diǎn)擊可以切換到不同的內(nèi)容區(qū)域,便于查看和管理。表單元素如文本框、密碼框等,本身不是按鈕,但可以通過點(diǎn)擊來獲得焦點(diǎn)并進(jìn)行輸入。單擊對象圖片如果圖片被設(shè)置為可點(diǎn)擊的,則可以執(zhí)行點(diǎn)擊操作,例如作為鏈接的一部分。圖標(biāo)按鈕自定義控件一些按鈕可能以圖標(biāo)的形式出現(xiàn),如社交媒體分享按鈕或菜單展開/收起按鈕。包含自定義控件,如滑塊、開關(guān)、評級系統(tǒng)等,控件可能需要特定的點(diǎn)擊操作。定位輸入框通過調(diào)用輸入框的send_keys()方法,可以在輸入框中輸入特定的字符串。輸入字符串示例代碼在百度首頁的示例中,定位到名稱為'wd'的輸入框,并輸入字符串“SeleniumWebDriver”。在自動化測試中,首先需要使用SeleniumWebDriver定位到頁面中的文本輸入框。輸入內(nèi)容在頁面測試中,清空輸入框或輸入字段的內(nèi)容是常見需求,為輸入新文本做準(zhǔn)備。要清空輸入框的內(nèi)容,可以使用WebDriver提供的clear()方法,該方法模擬用戶清空輸入的行為。使用clear()方法清空輸入框清空內(nèi)容在Web自動化測試中,提交表單是常見操作。首先,需要使用Selenium的find_element方法定位到表單的提交按鈕。定位提交按鈕一旦找到提交按鈕,就可以使用click()方法模擬用戶點(diǎn)擊操作,從而觸發(fā)表單的提交。確保自動化流程能正確提交表單。模擬點(diǎn)擊操作提交表單獲取頁面標(biāo)題我們可以通過driver.title來獲取當(dāng)前頁面的標(biāo)題,并打印到控制臺上。定位并獲取元素文本使用driver.find_element方法定位到頁面元素,并通過.text屬性獲取其文本內(nèi)容。獲取文本內(nèi)容獲取對象屬性值get_attribute方法get_attribute()方法用于獲取頁面元素的屬性值。例如,獲取元素的class屬性。定位元素打印屬性使用By.ID定位元素時(shí),需要傳入元素的ID值。例如,By.ID('element-id')將定位ID為'element-id'的元素。獲取元素屬性后,可以通過print()函數(shù)打印出來。例如,print(f"元素屬性值:{element_attribute}")將打印元素的class屬性。通過is_displayed()方法檢查元素是否在頁面上可見,該方法返回一個(gè)布爾值,指示元素是否可見。在Web自動化測試中,檢查元素是否可見通常用于驗(yàn)證頁面元素的加載狀態(tài)或用戶的交互效果。檢查元素可見性is_displayed方法對象顯示狀態(tài)通過is_enabled()方法檢查元素是否可編輯,如輸入框是否允許輸入。檢查元素編輯狀態(tài)參考代碼如下,檢查輸入框是否可編輯,并打印結(jié)果。編輯器狀態(tài)檢查對象編輯狀態(tài)檢查選項(xiàng)選中狀態(tài)通過is_selected()方法檢查選項(xiàng)元素(如單選按鈕、復(fù)選框)是否被選中。示例代碼·檢查復(fù)選框是否被選中is_selected=driver.find_element(By.ID,'checkbox-id').is_selected()print(f"復(fù)選框是否被選中:{is_selected}")對象選擇狀態(tài)4.7獲取頁面及其元素的相關(guān)信息理解頁面及其元素信息在Web自動化測試中的重要性,能有效地確保測試覆蓋率和準(zhǔn)確性。掌握獲取頁面標(biāo)題、URL、源碼及元素屬性和文本的方法,能夠讓你更深入地分析頁面行為。掌握信息獲取的方法理解頁面信息的重要性知識目標(biāo)獲取頁面信息學(xué)會使用WebDriverAPI獲取當(dāng)前頁面的標(biāo)題、URL和源碼,有效地進(jìn)行頁面信息的獲取和處理。編寫自動化測試腳本能夠編寫自動化測試腳本,獲取頁面元素的屬性值和文本內(nèi)容,提升自動化測試的效率。能力目標(biāo)素養(yǎng)目標(biāo)培養(yǎng)狀態(tài)檢查能力培養(yǎng)對頁面元素進(jìn)行狀態(tài)檢查和屬性分析的能力,提高問題診斷和數(shù)據(jù)提取的能力。提升數(shù)據(jù)處理技巧評估信息可靠性通過實(shí)踐操作,鍛煉信息搜集和數(shù)據(jù)處理的技巧,提升自動化測試腳本的精準(zhǔn)度和效率。學(xué)會評估頁面元素信息的可靠性和完整性,培養(yǎng)細(xì)致入微的觀察力和邏輯推理能力。任務(wù)情境小張的工作小張是名初級工程師,負(fù)責(zé)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025春季中國南水北調(diào)集團(tuán)水網(wǎng)智慧科技有限公司實(shí)習(xí)生招募6人考前自測高頻考點(diǎn)模擬試題附答案詳解
- 企業(yè)內(nèi)訓(xùn)及培訓(xùn)體系搭建模板
- 2025廣東廣州市中級人民法院招聘勞動合同制審判輔助人員考前自測高頻考點(diǎn)模擬試題附答案詳解(考試直接用)
- 2025年河南省中醫(yī)院(河南中醫(yī)藥大學(xué)第二附屬醫(yī)院)招聘博士研究生64人模擬試卷完整參考答案詳解
- 采購申請與審批流程標(biāo)準(zhǔn)化模板成本控制覆蓋版
- 2025廣東惠州市惠城區(qū)招聘公辦義務(wù)教育學(xué)校碩博教育人才65人(第二批)模擬試卷含答案詳解
- 2025甘肅農(nóng)業(yè)大學(xué)招聘事業(yè)編制人員7人模擬試卷及一套答案詳解
- 金融領(lǐng)域安全保障責(zé)任書9篇范文
- 2025貴州銅仁市玉屏永昇國有資產(chǎn)投資管理有限公司招聘4人考前自測高頻考點(diǎn)模擬試題及完整答案詳解
- 銷售業(yè)務(wù)合同管理工具
- 水平三(五年級)體育《籃球:單手肩上投籃》說課稿課件
- 2023發(fā)電機(jī)自動準(zhǔn)同期裝置整定計(jì)算技術(shù)導(dǎo)則
- GB/T 3672.1-2002橡膠制品的公差第1部分:尺寸公差
- 月度工作總結(jié)
- 箱涵高支模方案
- 第十章我國的環(huán)境保護(hù)政策和法規(guī)課件
- 綠化養(yǎng)護(hù)檢查記錄表
- 學(xué)生視力檔案表
- 《飼料學(xué)》粗飼料
- (實(shí)施)產(chǎn)萬噸高吸水性樹脂(SAP)技改項(xiàng)目環(huán)評
- 軟筆書法課程基礎(chǔ)PPT課件(PPT 115頁)
評論
0/150
提交評論