selenium基本操做

 

# 導入selenium的webdriver模塊css

from selenium import webdriver  

 

 # 打開火狐瀏覽器web

wd = webdriver.Firefox() 

 

# 使用火狐瀏覽器打開網址 瀏覽器

wd.get("http://babyplan.once.wiki/BabyPlan/login.jsp") 

 

# 刷新當前頁面框架

wd.refresh() 

 

# 讓瀏覽器進行後退操做jsp

wd.back()

 

#讓瀏覽器進行前進操做函數

wd.forward()  

 

設置窗口大小ui

1.設置瀏覽器的分辨率,第一個參數(666)是設置瀏覽器的寬,第二個參(100)數設置瀏覽器的高度url

wd.set_window_size(666,100)

2.將瀏覽器窗口最大化spa

wd.maximize_window()

 

 

# 獲取當前瀏覽器頁面的截圖,而且指定圖片的保存位置插件

wd.get_screenshot_as_file("d:/a.png") 

 

退出

1.關閉當前正在使用的頁面

wd.close()  

2.關閉當前全部經過同一個webdriver打開的頁面

wd.quit()  

 

定位

1.經過id定位,定位到當前網頁上ID爲""的元素,而後將"233"這個值插入進去

wd.find_element_by_id("id").send_keys("233")  

2.方法同上,經過name定位

wd.find_element_by_name("")  

 3.方法同上,經過class定位

wd.find_element_by_class_name("")  

 

#按鈕

使用ID定位到loginbtn後,使用「點擊」操

wd.find_element_by_id("loginbtn").click()  

 

 #連接

1. 經過匹配超連接上面的文原本進行定位

wd.find_element_by_link_text("註冊").click()  

2.經過匹配超連接上面的文本進行定位,可是這種匹配是模糊的,能夠不將文本補全

wd.find_element_by_partial_link_text("").click() 

 

#利用插件定位

瀏覽器:Firefox

安裝插件:Firebug和FirePath設置(在菜單欄中的附加組件中)

1.經過使用firepath插件獲取到具體的表達式來實現元素的定位

wd.find_element_by_xpath(".//*[@id='loginForm']/a").click() 

2.經過FirePath插件選擇css。經過樣式來定位到具體的元素,這種方法在沒有id 超連接等方式定位時,能夠對元素進行準確的定位(前提是頁面元素的樣式比較豐富) 

wd.find_element_by_css_selector(".userReg").click() 

 

等待方法

1.強制等待:什麼都無論,調用time函數,直接讓程序等待必定時間後在執行下一步操做

import time
time.sleep("等待時長")

 2.顯式等待:設置一個等待時長,每隔一段時間就會嘗試執行語句,若是執行語句爲真,則往下運行,若是爲假,則繼續等待,等到等待時長超限制,則拋出異常

WebDriverWait(調用的方法(wd),等待時長,每隔多長時間進行檢查(默認爲0.5秒)).until(要執行的語句) 

from selenium.webdriver.support.wait import WebDriverWait
w(wd, 10).until(lambda x: x.find_element_by_link_text(u"註冊").is_displayed()) 
 # 使用顯示等待的方法,判斷註冊按鈕是否存在(displayed:存在),判斷成立後再執行後面的內容,判斷不成立,則等待限制時長後再跑出異常

3.隱式等待: 全局等待時長,設置腳本在網頁加載過程當中的等待時長(當瀏覽器在等待時間內仍然在加載,轉圈圈的狀況下,則等待,加載完成後若是仍在時長範圍內,也會繼續執行下面的語句),超過期長後執行後面的語句

from selenium import webdriver

wd = webdriver.Firefox()

wd.implicitly_wait(5)

 

多窗口,多句柄

在平時的操做過程當中,正常都是使用同一個頁面,可是有時候由於點擊了某個連接,會出現一個新的窗口,

那麼這個時候,系統是不知道咱們要操做哪個窗口的

所以咱們須要有一個東西來讓系統知道咱們要操做的內容,就有了句柄這個東西

句柄的話能夠理解成每一個不一樣窗口都是有本身的一個標識符,至關與身份證同樣,在瀏覽器裏面,句柄就是頁面的身份證

 

# 獲取當前正在操做的頁面(句柄)

wd.current_window_handle 

 

# 獲取當前全部的頁面(句柄)

wd.window_handles 

 

# 切換頁面(句柄)

wd.switch_to_window("句柄值")

 

# 切換到當前頁面的彈出窗口

wd.switch_to_alert()

 

# 執行彈出窗口的確認操做

wd.switch_to_alert().accept() 

 

# 取消彈出窗口的確認操做

wd.switch_to_alert().dismiss()

 

# 定位到ID爲loginForm的表單,而後執行提交操做,這樣就不用再去找提交按鈕了

wd.find_element_by_id("loginForm").submit() 

 

元素操做

簡單操做:

1.點擊(鼠標左鍵)頁面按鈕:click()

2.清空輸入框:clear()

3.輸入字符串:send_keys()

 

模擬鍵盤操做

# 導入模擬鍵盤模塊

from selenium.webdriver.common.keys import Keys

#模擬鍵盤使用:

send_keys(Keys.要使用的按鍵)

 # 定位到ID爲password的元素後,模擬鍵盤進行回車鍵的操做

wd.find_element_by_id("password").send_keys(Keys.ENTER)

 

模擬鼠標操做

#導入鼠標事件模塊

from selenium.webdriver.common.action_chains import ActionChains

# 將wd對象綁定到鼠標方法

a = ActionChains(wd)  

# 將獲取到的元素地址賦值給b

b = wd.find_element_by_link_text("遊戲中心")

# 執行鼠標方法的移動到對象上方,指定要移動的對象,鼠標懸停

a.move_to_element(b) 

 

經常使用鼠標事件:

1.右擊鼠標:context_click()

a.context_click(b)  

2.雙擊鼠標:double_click()

a.double_click(b)

 

頁面裏面包含子頁面的方法(框架)

 # 使用switch方法切換到子頁面裏面去,方法參數爲子頁面id,切換完成以後才能對子頁面的內容進行操做

wd.switch_to_fram("top")

# 切換到子頁面裏面後,當前位置就不是在本來頁,所以要操做其餘頁面以前,要先跳出來

wd.switch_to_default_content() 

 

獲取元素屬性

 #獲取當前頁面的標題(HTML裏面的title)

wd.title

 # 獲取標籤的文本信息

wd.find_element_by_id("user").text

 

 獲取頁面屬性

# 定位到對應元素後,可使用get_attribute獲取到標籤裏面任意屬性的值(只要有)

wd.find_element_by_id("kw").get_attribute("name")  

 # 獲取當前瀏覽器的名稱

wd.name 

 # 獲取當前頁面的地址

wd.current_url
相關文章
相關標籤/搜索