您當前的位置:首頁 > 遊戲

Selenium超級詳細的教程

作者:由 隨遇而安 發表于 遊戲時間:2021-01-13

前言

相信搞過Python的人絕大部分都會一點點爬蟲技能,但是很多時候爬蟲也不是萬能的,這個時候就需要我們的自動化測試框架了,於是Selenium就應運而生了,它可以算的上是自動化測試框架中的佼佼者,因為它解決了大多數用來爬取頁面的模組的一個永遠的痛,那就是Ajax非同步載入,今天小編就帶大家來好好了解下這個Selenium 。

一、安裝與匯入

這裡我們需要安裝三個東西,一個是Selenium框架,還有一個瀏覽器,最後就是驅動。這裡小編選擇了谷歌瀏覽器,下載地址:

https://

u062。com/file/7715018-4

55263626

。然後Selenium框架嘛,大家都會下的啦,PIP就搞定了,最後就是要下載個Chrome瀏覽器的驅動程式,為了讓Selenium和瀏覽器之間產生關聯的一個東西,下載地址:

https://

u062。com/file/7715018-4

55263630

。安裝好瀏覽器後,將瀏覽器驅動放在瀏覽器同級目錄下,這樣前期工作就算都預備好了。

注:不要隨便亂下瀏覽器和驅動,每個瀏覽器和驅動器的版本都必須是一一對應的,不是通用的。

二、與瀏覽器建立連線

做好前面的準備工作,我們只需要寫入幾行Python程式碼即可與瀏覽器進行互動,如下:

from selenium import webdriver

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’) #獲取chrome瀏覽器的驅動,並啟動Chrome瀏覽器

c。get(‘https://www。baidu。com’)#開啟百度

三、查詢元素

對於操作瀏覽器中的頁面的自動化測試框架來說,肯定少不了 去發現網頁中的元素,你只有發現那些元素實時存在了才能做出下一步的操作。Selenium中提供了眾多的方法供我們去找到網頁中的元素,這給我們帶來了很大的便利,那麼都有哪些方法了,我們可以透過Python快速獲取到這些方法:

find_element #透過指定方法查詢指定的一個元素(需指定兩個引數)

find_element_by_class_name #透過Class name查詢指定的一個元素

find_element_by_css_selector #透過CSS選擇器查詢指定的一個元素

find_element_by_id #透過ID查詢指定的一個元素

find_element_by_link_text #透過連結文字獲取指定的一個超連結(精確匹配)

find_element_by_name #透過Name查詢指定的一個元素

find_element_by_partial_link_text #透過連結文字獲取指定的一個超連結(模糊匹配)

find_element_by_tag_name #透過標籤名查詢指定的一個元素

find_element_by_xpath #透過Xpath語法來指定的一個元素

find_elements #透過指定方法查詢所有元素(需指定兩個引數)

find_elements_by_class_name #透過Class name查詢所有元素

find_elements_by_css_selector #透過CSS選擇器查詢所有元素

find_elements_by_id #透過ID查詢所有元素

find_elements_by_link_text #透過連結文字獲取所有超連結(精確匹配)

find_elements_by_name #透過Name查詢所有元素

find_elements_by_partial_link_text #透過連結文字獲取所有超連結(模糊匹配)

find_elements_by_tag_name #透過標籤名查詢所有元素

find_elements_by_xpath #透過Xpath語法來查詢所有元素

1

可以看到輸入框的ID為KW,Name為WD,這裡我們選擇ID,選擇ID有三種方法,如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。get(‘https://www。baidu。com’)

kw1=c。find_element(By。ID,‘kw’)

kw2=c。find_element_by_id(‘kw’)

kw3=c。find_elements_by_id(‘kw’)[0]

print(kw1)

print(kw2)

print(kw3)

可以看到我們成功使用三種方法獲取到了這個元素,其它方法差不多,都是一通百通,喜歡哪種方法就使用哪種方法。

四、瀏覽器操作

1。獲取本頁面URL

c。current_url

2。獲取日誌

c。log_types #獲取當前日誌型別

c。get_log(‘browser’)#瀏覽器操作日誌

c。get_log(‘driver’) #裝置日誌

c。get_log(‘client’) #客戶端日誌

c。get_log(‘server’) #服務端日誌

##3。視窗操作

c。maximize_window()#最大化

c。fullscreen_window() #全屏

c。minimize_window() #最小化

c。get_window_position() #獲取視窗的座標

c。get_window_rect()#獲取視窗的大小和座標

c。get_window_size()#獲取視窗的大小

c。set_window_position(100,200)#設定視窗的座標

c。set_window_rect(100,200,32,50) #設定視窗的大小和座標

c。set_window_size(400,600)#設定視窗的大小

c。current_window_handle #返回當前視窗的控制代碼

c。window_handles #返回當前會話中的所有視窗的控制代碼

4。設定延時

c。set_script_timeout(5) #設定指令碼延時五秒後執行

c。set_page_load_timeout(5)#設定頁面讀取時間延時五秒

5。關閉

c。close() #關閉當前標籤頁

c。quit() #關閉瀏覽器並關閉驅動

6。列印網頁原始碼

c。page_source

7。螢幕截圖操作

c。save_screenshot(‘1。png’)#截圖,只支援PNG格式

c。get_screenshot_as_png() #獲取當前視窗的截圖作為二進位制資料

c。get_screenshot_as_base64() #獲取當前視窗的截圖作為base64編碼的字串

8。前進後退重新整理

c。forward() #前進

c。back() #後退

c。refresh()#重新整理

9。執行JS程式碼

在Selenium中也可以自定義JS程式碼並帶到當前頁面中去執行,如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

import time

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。get(‘https://www。baidu。com’)

kw1=c。find_element(By。ID,‘kw’)

c。execute_script(“alert(‘hello’)”)

time。sleep(3)

c。quit()

這裡我使用一個JS中的函式來執行螢幕提示的功能,成功被執行。

10。Cookies操作

c。get_cookie(‘BAIDUID’) #獲取指定鍵的Cookies

c。get_cookies() #獲取所有的Cookies

for y in c。get_cookies():

x=y

if x。get(‘expiry’):

x。pop(‘expiry’)

c。add_cookie(x) #新增Cookies

c。delete_cookie(‘BAIDUID’) #刪除指定鍵的Cookies內容

c。delete_all_cookies() #刪除所有cookies

11.獲取標題內容

c。title

12。獲取當前瀏覽器名

c。name

13。全域性超時時間

c。implicitly_wait(5)

五、元素操作

對我們找到的元素進行二次操作,不僅可以再次選擇子元素還可以進行其它操作。如下:

kw1。clear() #清除元素的值

kw1。click() #點選元素

kw1。id #Selenium所使用的內部ID

kw1。get_property(‘background’) #獲取元素的屬性的值

kw1。get_attribute(‘id’) #獲取元素的屬性的值

kw1。location #不滾動獲取元素的座標

kw1。location_once_scrolled_into_view #不滾動且底部對齊並獲取元素的座標

kw1。parent #父元素

kw1。send_keys(‘’) #向元素內輸入值

kw1。size #大小

kw1。submit #提交

kw1。screenshot(‘2。png’) #擷取元素形狀並儲存為圖片

kw1。tag_name #標籤名

kw1。text #內容,如果是表單元素則無法獲取

kw1。is_selected() #判斷元素是否被選中

kw1。is_enabled() #判斷元素是否可編輯

kw1。is_displayed #判斷元素是否顯示

kw1。value_of_css_property(‘color’) #獲取元素屬性的值

kw1。_upload(‘2。png’) #上傳檔案

六、鍵盤滑鼠操作

1。模擬鍵盤輸入和按鍵

from selenium。webdriver。common。keys import Keys

c。find_element(By。ID,‘kw’)。send_keys(‘python’)#輸出Python

c。find_element(By。ID,‘kw’)。send_keys(Keys。ENTER)#回車鍵

c。find_element(By。ID,‘kw’)。click()#點選

這裡列舉出了一個最簡單的鍵盤輸入和滑鼠點選的例子,不過我們在Selenium中可以使用更為高逼格的操作,那麼是什麼了?當然是咱們的滑鼠鍵盤監聽事件來觸發事件啦,而且它裡面的方法的確也很多樣化,滿足小編日常的騷操作不在話下,如下所示:

click(on_element=None) #滑鼠左鍵單擊

click_and_hold(on_element=None) #單擊滑鼠左鍵,不鬆開

context_click(on_element=None) #單擊滑鼠右鍵

double_click(on_element=None) #雙擊滑鼠左鍵

drag_and_drop(source,target) #拖拽到某個元素然後鬆開

drag_and_drop_by_offset(source,xoffset,yoffset) #拖拽到某個座標然後鬆開

key_down(value,element=None) #按下鍵盤上的某個鍵

key_up(value, element=None) #鬆開鍵盤上的某個鍵

move_by_offset(xoffset, yoffset) #滑鼠從當前位置移動到某個座標

move_to_element(to_element) #滑鼠移動到某個元素

move_to_element_with_offset(to_element, xoffset, yoffset) #移動到距某個元素(左上角座標)多少距離的位置

pause(seconds) #暫停所有輸入(指定持續時間以秒為單位)

perform() #執行所有操作

reset_actions() #結束已經存在的操作並重置

release(on_element=None) #在某個元素位置鬆開滑鼠左鍵

send_keys(*keys_to_send) #傳送某個鍵或者輸入文字到當前焦點的元素

send_keys_to_element(element, *keys_to_send) #傳送某個鍵到指定元素

以上就是咱們滑鼠和鍵盤的全部操作了,小編將用一個例子帶大家零基礎入門。如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

import time

from selenium。webdriver。common。keys import Keys

from selenium。webdriver。common。action_chains import ActionChains

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。get(‘https://www。baidu。com’)

a=ActionChains(c)

kw1=c。find_element(By。ID,‘kw’)

tj=c。find_element(By。ID,‘su’)

tj。send_keys(Keys。CONTROL,‘c’) #複製

a。drag_and_drop(kw1,tj)。perform()#從輸入框拖動到搜尋按鈕

kw1。send_keys(Keys。CONTROL,‘v’)#貼上

tj。send_keys(Keys。ENTER)

time。sleep(3)

c。close()

c。quit()

這裡我們透過對事件的監控,進行復制和貼上,這裡涉及到一個組合鍵的知識,大家注意。

七、選項操作

我們可以透過給當前操作的物件一些選項來增強互動能力,如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

import time

from selenium。webdriver。chrome。options import Options

o=Options()

o。add_argument(‘——headless’)#無介面瀏覽

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’,chrome_options=o)

c。get(‘https://www。baidu。com’)

kw1=c。find_element(By。ID,‘kw’)

print(c。title)

time。sleep(3)

c。close()

c。quit()

這個時候就實現了咱們的無介面瀏覽了,也就是不用開啟瀏覽器即可自動返回執行的結果。不過你可別以為選項就那麼一兩個,那可是多到你懷疑人生的,例如:

o。add_argument(‘——window-size=600,600’) #設定視窗大小

o。add_argument(‘——incognito’) #無痕模式

o。add_argument(‘——disable-infobars’) #去掉chrome正受到自動測試軟體的控制的提示

o。add_argument(‘user-agent=“XXXX”’) #新增請求頭

o。add_argument(“——proxy-server=http://200。130。123。43:3456”)#代理伺服器訪問

o。add_experimental_option(‘excludeSwitches’, [‘enable-automation’])#開發者模式

o。add_experimental_option(“prefs”,{“profile。managed_default_content_settings。images”: 2})#禁止載入圖片

o。add_experimental_option(‘prefs’,

{‘profile。default_content_setting_values’:{‘notifications’:2}}) #禁用瀏覽器彈窗

o。add_argument(‘blink-settings=imagesEnabled=false’) #禁止載入圖片

o。add_argument(‘lang=zh_CN。UTF-8’) #設定預設編碼為utf-8

o。add_extension(create_proxyauth_extension(

proxy_host=‘host’,

proxy_port=‘port’,

proxy_username=“username”,

proxy_password=“password”

))# 設定有賬號密碼的代理

o。add_argument(‘——disable-gpu’) # 這個屬性可以規避谷歌的部分bug

o。add_argument(‘——disable-javascript’) # 禁用javascript

o。add_argument(‘——hide-scrollbars’) # 隱藏捲軸

o。binary_location=r“C:\Users\Administrator\AppData\Local\Google\Chrome\Application” #指定瀏覽器位置

o。add_argument(‘——no-sandbox’) #解決DevToolsActivePort檔案不存在的報錯

其實選項的新增無非就是分為以下這幾種,如下:

o。set_headless() #設定啟動無介面化

o。binary_location(value) #設定chrome二進位制檔案位置

o。add_argument(arg) #新增啟動引數

o。add_extension(path) #新增指定路徑下的擴充套件應用

o。add_encoded_extension(base64) #新增經過Base64編碼的擴充套件應用

o。add_experimental_option(name,value) #新增實驗性質的選項

o。debugger_address(value) #設定偵錯程式地址

o。to_capabilities() #獲取當前瀏覽器的所有資訊

雖然選項很多,但是我們真正能用到的不多,一般就是無痕模式或者禁用JavaScript和圖片來快速獲取到相關資訊。雖然我們上面使用的是Options方法,但是在實際應用中建議大家使用的ChromeOptions方法。

八、框架操作(Frame/IFrame)

我們還可以操作框架裡的東西,比如IFrame,Frame等等,雖然都是框架,但是這兩者操作起來還是有很大差別的。下面我們就來看看吧,如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

import time

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。implicitly_wait(10)

c。get(‘https://hao。360。com/?a1004’)

#ss=c。find_element(By。CLASS_NAME,‘NEWS_FEED_VIDEO_1595850774217HPA70’)#不容易找到標籤

c。switch_to。frame(0)#索引

c。switch_to。frame(‘NEWS_FEED_VIDEO_1595850774217HPA70-VideoIframe’) #ID

c。switch_to。frame(‘NEWS_FEED_VIDEO_1595850774217HPA70’)#Class

c。switch_to。frame(c。find_element_by_tag_name(“iframe”))#標籤

time。sleep(3)

c。close()

c。quit()

這裡小編是以360瀏覽器的主頁為例子,對它裡面的IFrame進行訪問,最有效的方法一般就是我上面提到的四種了。這裡我們有時候因為這個框架需要載入才可以出來,所以很多時候是無法獲取到的,因此我們只有使用滑動載入到出現這個標籤或者ID,Class為可以獲取到,這在剛才小編是說了的,大家可以往前看看,不過這個方法不推薦使用,為啥?因為開發者文件上是這樣寫的。我們的Frame由於是IFrame裡的子集,所以上面的方法便是可以層層遍歷的好方法,但是如果我們遍歷到最後瞭如何返回主框架了,可以這樣做,如下所示:

c。switch_to。default_content()

這樣就可以回到主框架繼續進行操作了。如果我們由裡往外遍歷的話,那麼可以這樣來做,如下:

c。switch_to。parent_frame()

九、Alert

在彈窗處理中,我們會遇到三種情況,如下:

瀏覽器彈出框

新視窗彈出框

人為彈出框

那麼我們該怎麼分辨了?下面跟我一起看看吧。

1。瀏覽器彈出框

首先說說瀏覽器彈出框,想必大家對JavaScript中的Alert,Confirm,Prompt應該不是很陌生,就是彈出框,確認框,輸入框;基本方法我們來看下,如下:

from selenium。webdriver。common。alert import Alert

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。implicitly_wait(10)

c。get(‘https://www。baidu。com’)

a1=Alert(c)

a1。accept() #確定

a1。dismiss() #取消

a1。authenticate(username,password) #使用者身份驗證

a1。send_keys(‘’) #輸入文字或按鍵

a1。text #獲取彈窗內容

這裡我們應對每種情況它上面的方法的對應位置都是會有所變化的,所以我們需要根據具體情況來進行操作,而且還可以使用另一種方法,如下:

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。implicitly_wait(10)

c。get(‘https://www。baidu。com’)

a1=c。switch_to_alert()

a1。accept() #確定

a1。dismiss() #取消

a1。authenticate(username,password) #使用者身份驗證

a1。send_keys(‘’) #輸入文字或按鍵

a1。text #獲取彈窗內容

注:該類方法必須在有彈框的情況下才有作用,如沒有會報錯。

2。新視窗彈出框

上面就是瀏覽器彈出框的處理方法了,如果是新視窗彈出的話那麼就不一樣了,我們需要透過控制代碼來定位,前面我們提到過這兩個方法。下面我們來看看它們的具體用法,如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

import time

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。implicitly_wait(10)

c。get(‘https://www。baidu。com’)

kw1=c。find_element(By。ID,‘kw’)

tj=c。find_element(By。ID,‘su’)

hwnd=c。window_handles #所有視窗控制代碼

for h in hwnd:

if h !=c。current_window_handle: #如果控制代碼不是當前視窗控制代碼則切換 c。switch_to_window(h) #切換視窗

else:

print(‘無需切換視窗’)

time。sleep(3)

c。close()

c。quit()

注:如果有多個視窗,當你關閉了當前視窗想切換到另一個視窗,你需要把沒關閉的視窗切換成當前活動視窗,因為Selenium是不會為你做這件事的。

3。人為彈出框

這類彈出框是我們自己開發的,一般都是使用Div包裹一些其它的元素標籤然後形成一個整體,當我們觸發某個事件的時候就會出現,否則消失。這種彈出框使用我們的眾多Find字首的方法就能遍歷到,很方便,這裡不一一細說。

十、判斷

在Selenium中我們在做自動化測試時常無法判斷一個元素是否真的顯示出來了,因此會各種報錯,接下來我們對這些操作進行判斷,如果顯示出了我們預期的值,那麼就進行下一步操作,否則就關閉或者暫停幾秒然後再判斷,這裡我要跟大家說Selenium中的一個模組——-Expected_Conditions,簡稱為EC,如下所示:

from selenium import webdriver

from selenium。webdriver。common。by import By

from selenium。webdriver。support import expected_conditions as EC

import time

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。implicitly_wait(10)

c。get(‘https://baidu。com’)

t=EC。title_is(‘百度一下,你就知道’)

print(t(c))

time。sleep(3)

c。close()

c。quit()

這裡其實就是判斷當前頁面的標題是否是我們給定的文字,可以看出這裡為True,說明是。它不光就一個方法哦,還有其它的,小編在這裡大致說下,如下所示:

EC。title_contains(‘’)(c)#判斷頁面標題是否包含給定的字串

EC。presence_of_element_located(‘’)(c) #判斷某個元素是否載入到dom樹裡,該元素不一定可見

EC。url_contains(‘’)(c) #判斷當前url是否包含給定的字串

EC。url_matches(‘’)(c) #匹配URL

EC。url_to_be(‘’)(c) #精確匹配

EC。url_changes(‘’)(c) #不完全匹配

EC。visibility_of_element_located(‘’)(c) #判斷某個元素是否可見,可見代表元素非隱藏元素

EC。visibility_of(‘’)(c) #跟上面一樣,不過是直接傳定位到的element

EC。presence_of_all_elements_located(‘’)(c) #判斷是否至少有1個元素存在於dom樹中

EC。visibility_of_any_elements_located(‘’)(c) #判斷是否至少一個元素可見,返回列表

EC。visibility_of_all_elements_located(‘’)(c) #判斷是否所有元素可見,返回列表

EC。text_to_be_present_in_element(‘’)(c) #判斷元素中的text是否包含了預期的字串

EC。text_to_be_present_in_element_value(‘’)(c)#判斷元素中value屬性是否包含預期的字串

EC。frame_to_be_available_and_switch_to_it(‘’)(c) # 判斷該frame是否可以switch進去

EC。invisibility_of_element_located(‘’)(c) #判斷某個元素是否不存在於dom樹或不可見

EC。element_to_be_clickable(‘’)(c) #判斷某個元素中是否可見並且可點選

EC。staleness_of(‘’)(c) #等某個元素從dom樹中移除

EC。element_to_be_selected(‘’)(c) #判斷某個元素是否被選中了,一般用在下拉列表

EC。element_located_to_be_selected(‘’)(c) #判斷元組中的元素是否被選中

EC。element_selection_state_to_be(‘’)(c) #判斷某個元素的選中狀態是否符合預期

EC。element_located_selection_state_to_be(‘’)(c) #跟上面一樣,只不過是傳入located

EC。number_of_windows_to_be(‘’)(c) #判斷視窗中的數字是否符合預期

EC。new_window_is_opened(‘’)(c) #判斷新的視窗是否開啟

EC。alert_is_present(‘’)(c) #判斷頁面上是否存在alert

這就是它全部的方法了,簡直不要多簡單。

十一、選擇

剛剛講過判斷,現在我們來說說選擇,選擇無非就是挑好的扔爛的,順著思路來不會錯,總體來講還是挺簡單的,如下:

from selenium import webdriver

from selenium。webdriver。common。by import By

from selenium。webdriver。support import expected_conditions as EC

from selenium。webdriver。support。select import Select

import time

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。implicitly_wait(10)

c。get(‘http://www。juliwz。cn/forum。php’)

s=Select(c。find_element_by_id(‘ls_fastloginfield’))#例項化

res=s。all_selected_options#全部選中子項

res1=s。options#全部子項

print(res)

print(res1)

time。sleep(3)

c。close()

c。quit()

發覺主流網站都沒有Select這個標籤,於是找了個很冷門的網站,就一個Select。Select裡面的方法也是相當多的,如下:

s。first_selected_option #第一個選中的子項

s。select_by_index(index) #根據索引選擇

s。select_by_value(value) #根據值來選擇

s。select_by_visible_text(text) #根據選項可見文字

s。deselect_by_index(index) #根據索引來取消選擇

s。deselect_by_value(value) #根據值來取消選擇

s。deselect_by_visible_text(text) #根據可見文字來取消選擇

s。deselect_all() #取消所有選擇

十二、顯示等待和隱式等待

想必大家應該聽過這個概念,顯示等待就是瀏覽器在我們設定的時間內不斷尋找,等到元素後才繼續執行,如果沒在規定時間內找到,也會拋異常;而隱式等待則是我們設定時間,然後程式去找元素,期間會不斷重新整理頁面,到了時間仍然沒找到就拋異常。這裡有個常用的模組專門用來實現顯示等待和隱式等待的,它就是”wait“,我們來看看吧。如下:

from selenium。webdriver。support。ui import WebDriverWait

from selenium import webdriver

from selenium。webdriver。common。by import By

import time

c=webdriver。Chrome(executable_path=r‘C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver。exe’)

c。get(‘https://www。baidu。com/’)

su=WebDriverWait(c,10)。until(lambda x:x。find_element_by_id(‘su’))

su。location_once_scrolled_into_view

print(su。get_attribute(‘value’))

time。sleep(3)

c。close()

c。quit()

隱式等待很簡單,就一行程式碼,如下:

c。implicitly_wait(10)

它的等待時間適用於全域性的環境,也就是任何地方找不到某個元素,它都將發揮作用,如果找得到,則不會產生作用。

十三、總結

Selenium的內容其實還是挺豐富的,它還有手機端的自動化測試框架,不過小編先把WEB端講完就可以了,畢竟也寫了這麼多了,日後有時間再慢慢了解。大家如果是對觸控活動事件感興趣的也可以看看“touch_actions“這個模組。這個模組裡整合的都是關於觸控式螢幕的操作,裡面也有很多的方法,小編之所以能把Selenium一天學完,還是Selenium模組中的文件比較給力,主要是介紹的比較好,讓人能輕鬆聯想到方法的使用,感激開源作者的無私奉獻。

標簽: element  元素  Find  WebDriver  Selenium