瀏覽器操作
-
控制瀏覽器視窗大小
瀏覽器設定最大化
driver.maximize_window()
設定瀏覽器顯示大小
driver.set_window_size(1480, 800)
-
控制瀏覽器前進后退
后退:driver.back()
前進:driver.forward()
效果演示:

-
模擬瀏覽器重繪
driver.refresh()
簡單的元素操作
最常用的幾個方法:
-
clear() 清除文本
-
send_keys(*values) 模擬按鍵輸入
-
click() 單擊元素
-
submit() 用于提交表單,有時候可以與click()方法互換使用
獲取元素的某些屬性:
size: 回傳元素的尺寸
text: 回傳元素的文本
get_attribute(name): 獲得屬性值
is_displayed(): 獲取該元素是否用戶可見
is_enabled(): 判斷元素是否可用
is_selected(): 判斷元素是否被選中
模擬滑鼠操作
由于現在web端頁面提供了更豐富的滑鼠互動方式,因此,在做UI自動化的程序中可能會用到滑鼠的右擊、雙擊、懸停、甚至是滑鼠拖動等功能,這些在WebDriver 中都是支持的,基于滑鼠的相關操作方法都封裝在ActionChains類中,
以python為例,需要先匯入對應的包:
from selenium.webdriver.common.action_chains import ActionChains
ActionChains類提供了滑鼠操作的常用方法:
-
perform():執行所有ActionChains中存盤的行為
-
context_click(): 右擊
-
double_click(): 雙擊
-
drag_and_drop(): 拖動
-
move_to_element(): 滑鼠懸停
-
drag_and_drop(source,target): 滑鼠拖放操作,在source元素上按住滑鼠左鍵,然后移動到target目標元素上釋放
-
click_and_hold(): 滑鼠左鍵按住不放
-
release(): 釋放滑鼠
使用案例:

所有滑鼠的操作,最后都要呼叫perform()方法進行最后的執行,
模擬鍵盤操作
之前介紹過,可以通過send_keys()方法用來模擬鍵盤輸入,除此之外,還可以用它來輸入鍵盤上的按鍵以及組合鍵,
使用前,需要先匯入keys類
from selenium.webdriver.common.keys import Keys
send_keys()方法用來模擬鍵盤輸入,常用的鍵盤操作:
send_keys()方法用來模擬鍵盤輸入,常用的鍵盤操作:
-
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)
-
send_keys(Keys.CONTROL,'a') 全選(Ctrl+A)
-
send_keys(Keys.CONTROL,'c') 復制(Ctrl+C)
-
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
-
send_keys(Keys.CONTROL,'v') 粘貼(Ctrl+V)
-
send_keys(Keys.F1) 鍵盤 F1
-
……
-
send_keys(Keys.F12) 鍵盤 F12
設定元素等待
WebDriver提供了兩種型別的等待:顯示等待和隱式等待
顯示等待:
顯示等待使WebDriver等待某個條件成立時繼續執行,否則在達到最大時長時拋出超時例外(TimeoutException),這個是針對特定元素設定的
具體用法:
from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)timeout:最長超時時間,單位默認為秒poll_frequency:檢測的間隔時間,默認0.5秒
WebDriverWait()一般與until()或until_not()方法配合使用,常見用法:???????
from selenium.webdriver.support import expected_conditions as ECWebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
expected_conditions類提供的預期條件判斷的方法:
title_is:判斷當前頁面的title是否完全等于(==)預期字串,回傳是布林值
title_contains 判斷當前頁面的title是否包含預期字串,回傳布林值
presence_of_element_located:判斷某個元素是否被加到了dom樹里,并不代表該元素一定可見
visibility_of_element_located : 判斷某個元素是否可見. 可見代表元素非隱藏,并且元素的寬和高都不等于0
visibility_of :跟上面的方法做一樣的事情,只是上面的方法要傳入locator,這個方法直接傳定位到的element就好了
presence_of_all_elements_located : 判斷是否至少有1個元素存在于dom樹中,舉個例子,如果頁面上有n個元素的class都是'column-md-3',那么只要有1個元素存在,這個方法就回傳True
text_to_be_present_in_element : 判斷某個元素中的text是否 包含 了預期的字串
text_to_be_present_in_element_value:判斷某個元素中的value屬性是否 包含 了預期的字串
frame_to_be_available_and_switch_to_it : 判斷該frame是否可以switch進去,如果可以的話,回傳True并且switch進去,否則回傳False
invisibility_of_element_located : 判斷某個元素中是否不存在于dom樹或不可見
element_to_be_clickable : 判斷某個元素中是否可見并且是enable的,這樣的話才叫clickable
staleness_of :等某個元素從dom樹中移除,注意,這個方法也是回傳True或False
element_to_be_selected:判斷某個元素是否被選中了,一般用在下拉串列
element_selection_state_to_be:判斷某個元素的選中狀態是否符合預期
element_located_selection_state_to_be:跟上面的方法作用一樣,只是上面的方法傳入定位到的element,而這個方法傳入locator
alert_is_present : 判斷頁面上是否存在alert
隱式等待:
隱式等待,是設定的全域等待,設定等待時間,是對頁面中的所有元素設定加載時間,即整個頁面的加載時間;
用法:driver.implicitly_wait(10),如果不設定默認為0
sleep休眠方法:
通過匯入time模塊的方法,強制固定時間的休眠,比如停留X秒之后再繼續操作,用法:???????
import timetime.sleep(5) #停留5秒以后再繼續操作
frame/iframe/window切換
1、有時候頁面會經常遇到frame/iframe嵌套,WebDriver只能在一個頁面上對元素識別與定位,這個時候需要切換到相應的frame/iframe里面,
用法:driver.switch_to_frame(element)
2、有時候點某個鏈接,會跳轉到一個新的頁簽,這個時候需要切換到新打開的頁簽中才能繼續操作,
用法:driver.switch_to_window(element)
alert、confirm以及prompt彈窗處理
處理JavaScript所生成的alert、confirm以及prompt彈窗用法如下:
使用driver.switch_to.alert方法定位到alert/confirm/prompt,然后使用text/accept/dismiss/send_keys等方法進行操作,
注意:在selenium2的版本中可能會出現教大家用driver.swicth_to_alert()方法去定位的,在selenium3中已經改為了driver.switch_to.alert
-
text:回傳alert/confirm/prompt中的文字資訊
-
accept():接受現有警告框,類似于確定操作
用法演示:???????
print(driver.switch_to.alert.text)driver.switch_to.alert.accept()

-
dismiss():解散現有警告框,類似于取消
-
send_keys():發送文本至警告框
注意:??????
driver.switch_to.alert.send_keys('hello world') #只對prompt有效driver.switch_to.alert.accept() #確認driver.switch_to.alert.dismiss() #取消

猜你喜歡:
Selenium工具的各個組件以及演變歷史你都了解嗎
什么樣的專案適合UI自動化測驗
Selenium之頁面元素定位
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/230310.html
標籤:python
上一篇:scrapy頭部修改詳解
