目錄
目錄css
Selenium的介紹Selenium環境配置步驟html
Selenium的安裝python
Driver的配置Python中如何使用程序員
強制等待、隱式等待、顯式等待強制等待web
隱式等待顯式等待面試
web控件定位與常見操做selenium點擊與輸入Xpath定位ajax
Css Selectorsql
selenium中使用 XPath 和 css selector web控件的交互進階chrome
Actions數據庫
表單操做
多窗口處理與網頁frame 多窗口處理
多窗口處理流程frame處理
多瀏覽器運行
執行JavaScript腳本selenium中如何調用js 文件上傳、彈框處理
文件上傳
彈框處理機制PageObject設計模式
PageObject原則
Selenium的介紹
簡介:
Selenium支持web瀏覽器的自動化。它主要由三個工具構成:WebDriver、IDE、Grid
官方網站
Selenium環境配置步驟
- 準備好python環境
- 準備好selenium環境
- 下載瀏覽器對應的driver版本
- driver配置環境變量
- 在python中import對應的依賴包
Selenium的安裝
前提
配置好python環境配置好pip工具
安裝
pip install selenium
或者在pycharm直接安裝
Driver的配置
Driver的介紹
https://www.selenium.dev/documentation/en/webdriver/driver_requirements/
Driver的下載
淘寶鏡像:https://npm.taobao.org/mirrors/chromedriver/
官方網站:https://chromedriver.storage.gooleapis.com/index.html
Driver的安裝:
找到和本身瀏覽器版本適配的driver版本導入到環境變量中
Python中如何使用
import selenium from selenium import webdriver def test_selenium(): driver = webdriver.Chrome() driver.get('https://www.baidu.com')
強制等待、隱式等待、顯式等待
強制等待是sleep,強烈不推薦,設定的時間太固定,若是是模擬器等待3秒,真機可能只須要等待2秒
driver.implicitly.wat(timeout) ,貫穿所有元素的等待,只須要設定一次便可,一般是在建立driver的時候後的代碼運行,是dom創建以後的等待
顯式等待是在客戶端的等待:引用連個包和一個例子
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
WebDriverWait(self.driver,10).until(expected_conditions.element_to_be_clickable(loca tor))
強制等待
強制等待,線程休眠必定時間
import time time.sleep(3)
隱式等待
隱式等待,就是在建立driver時,設置全局元素等待超時時間。當要查找元素,而這個元素沒有立刻出現時,告訴 WebDriver 查詢 Dom 必定時間,實際上瀏覽器會在你本身設定的時間內不斷的刷新頁面去尋找咱們須要的元素。默認值是 0.5秒,可是設置以後,這個時間將在WebDriver 對象實例整個生命週期都起做用。(處理 Table 對象時,須要將此設置爲默認值)
self.driver.implicitly_wait(10)
設置等待時長爲10秒,首先這10秒並不是一個固定的等待時間,它並不影響腳本的執行速度。其次,它並不針對頁面上的某一元素進行等待。當腳本執行到某個元素定位是,若是元素能夠定位,則繼續執行,若是元素定位不到,則它將以輪詢的方式不斷地判斷元素是否被定位到。假設在第六秒定位到了元素則繼續執行,若直到超出設置的時長10秒尚未定位到元素,則拋出異常。
顯式等待
顯式等待的簡介
- 顯式等待與隱式等待相對,顯式等待必須在每個須要等待的元素前面進行聲明
- 是針對某個特定的元素設置等待時間,在設置時間內,默認每隔一段時間檢測一次當前某個元素是否存在
- 若是在規定的時間內找到元素,則直接執行,即找到元素就執行相關操做
- 若是超過設置時間檢測不到就拋出異常,默認檢測頻率爲0.5s,默認拋出的異常時NoSuchElementException
- 用到的兩個經常使用類WebDriverWait expected_condition
爲何要用顯式等待,爲何隱式等待沒法替代顯式等待
顯式等待能夠等待動態加載的ajax元素,須要配合expected_condition來檢查條件
通常頁面上元素的呈現順序是
首先出現title
而後是dom樹的出現,presence還不完整,dom樹出現就是隱式等待了,但此時的元素可能尚未是可點擊的狀態,因此只用隱式等待,使用click方法,確定會報錯的
css出現:可見visbility
js的出現,js特效執行:可點擊clickable html文檔是自上而下加載的
js文件加載會阻塞html內容的加載,有些js異步加載的方式來完成js的加載 樣式表下載完成以後跟以前的樣式表一塊兒進行解析,會對以前那的與元素從新渲染
presence-visibility-clickabe,元素出現-可見-可點擊,是元素的三個性質,當DOM樹出現時, 定位元素可能已經顯示出來了,可是可見和可點擊的屬性可能還沒加載出來,這時候元素的一些方法是不可用的,好比 element.click() ,要等到js渲染出來之後,元素的click屬性才能夠用
【關注+點贊+私信程序員一凡領取完整版PDF文檔】 |
最後:
歡迎關注公衆號:程序員一凡,領取一份300頁pdf文檔的Python自動化測試工程師核心知識點總結! 這些資料的內容都是面試時面試官必問的知識點,篇章包括了不少知識點,其中包括了有基礎知識、Linux必備、Shell、互聯網程序原理、Mysql數據庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試、安全測試等。