Selenium2 (python)

覆手為雲p發表於2017-08-19


 

 

包名:selenium

支援瀏覽器:Firefox,InternetExplorerDriver,OperaDriver,Chrome(要使用一種瀏覽器應下載相應的driver驅動)

firefox: https://github.com/mozilla/geckodriver/releases

chrome: http://chromedriver.storage.googleapis.com/index.html

IE: http://selenium-release.storage.googleapis.com/index.html

 

一、基本命令

 1 dr = selenium.webdriver.Firefox()  開啟瀏覽器;
 2 dr.maximize_window()              最大化
 3 dr.set_window_size(400,640)        設定瀏覽器大小;
 4 dr.get("url")               開啟網頁;
 5 dr.back()                 後退;
 6 dr.forward()               前進;
 7 dr.current_url              獲取當前url;
 8 dr.current_window_handle        獲得當前視窗;
 9 dr.window_handles              獲得所有視窗;
10 switch_to_window()             在多視窗之間切換;
11 dr.execute_script()            執行js指令碼;
12 dr.quit()                退出瀏覽器;

 

 

二、元素定位

1 dr.find_element_by_id()
2 dr.find_element_by_name()
3 dr.find_element_by_class_name()
4 dr.find_element_by_tag_name()
5 dr.find_element_by_link_text()
6 dr.find_element_by_partial_link_text()  
7 dr.find_element_by_xpath()

路徑示例:"/html/body/div[2]/form/span/input"

通過id查詢:"//input[@id=’input’]"  還可以用and,or進行多個屬性聯合查詢,每個前都需@

能過上一級目錄定位:"//span[@id=’input-container’]/input"

dr.find_element_by_css_selector()

 

三、css元素匹配規則

 1 *            通過元素選擇器,匹配任何元素;
 2 E            標籤選擇器,匹配所有使用E標籤的元素;
 3 .info          class選擇器,匹配所有class屬性中包含info的元素;
 4 #footer        id選擇器,匹配所有id屬性等於footer的元素;
 5 E,F            多元素選擇器,同時匹配所有E或F元素;
 6 E F            後代元素選擇器,匹配所有屬於E元素後代的F元素;
 7 E>F            子元素選擇器,匹配所有E元素的子元素F
 8 E+F            毗鄰元素選擇器,匹配緊隨E元素之後的同級元素F(只匹配第一個)
 9 E~F            同級元素選擇器,匹配所有在E元素之後的同級F元素;
10 E[att='val']     屬性att值為val的E元素;
11 E[att^='val']    屬性att值以val開頭的E元素;
12 E[att$='val']    屬性att值以val結尾的E元素;
13 E[att*='val']    屬性att值包含val的E元素;
14 E[att1='v1'][att2='v2']    att1和att2的同時定位;
15 E:contains('xxxx')內容中包含xxxx的E元素;
16 E:not(s)          匹配不符合當前選擇器的任何元素;
18 E:nth(n)    在其父元素中的E子元素集合中排在第n+1個E元素(例:css=ul>li:nth(0)) 19 E:eq(n)   同上; 20 E:first   第一個; 21 E:last   最後一個; 22 E:even   偶數位元素; 23 E:odd    奇數位元素; 24 E:lt(n)   前n個元素; 25 E:gt(n)   排在n位之後的元素; 26 E:only-child  父元素的唯一一個子元素且標籤為E; 27 E:empty   不包含任何子元素的E元素; 29 find_elements   也可以上各種方法定位元素,主要用於批量操作物件,或者先獲取一組物件,然後再從之中選擇一個。

 

四、對已定位到元素(WebElement)的操作     

1 click()        單擊;
2 send_keys()    輸入;還可傳送模擬鍵盤事件,具體鍵存於selenium.webdriver.common.keys;
3 submit()      提交表單;
4 clear()        清除元素內容;

WebElement的一些屬性:

1 size            尺寸;
2 text            元素文字;
3 get_attribute(name)   返回元素的屬性值,可以是id,name,type或元素擁有的其它屬性;
4 is_displayed()        元素是否使用者可見;

 

五、滑鼠操作(ActionChains)常用方法

1 context_click()             右擊;
2 double_click()               雙擊;
3 drag_and_drop(source,target)    拖動;
4 move_to_element()          懸停在一個元素上;
5 click_and_hold()           左鍵點選一個元素且不釋放;

例:ActionChains(driver).context_click(element).perform()     perform()

 

六、alert/comfirm/prompt       等彈出框的處理

使用switch_to.alert()    方法定位到相應的框體;

然後使用以下方法執行相應的操作:

1 text      返回文字資訊;
2 accept     確認;
3 dismiss    取消;
4 send_keys  輸入值;

 

七、cookie處理

1 get_cookies()            獲得所有cookie資訊;
2 get_cookie(name)        返回特定name的cookie資訊;
3 add_cookie(cookie_dict)    新增cookie;
4 delete_cookie(name)       刪除指定cookie
5 delete_all_cookies()      刪除所有cookie資訊;

 

八、補充內容

常用js指令碼:

1 var q=document.documentElement.scrollTop=0    將滾動條滑到最開始;
2 $("#tooltip").fadeOut();                隱藏文字資訊;
3 $(arguments[0]).fadeOut()                隱藏按鈕;
4 implicitly_wait()                   超時等待;
5 switch_to_frame()                   切換主框架;

 

層級定位:可在一個find_element後再接一個.find_element,通過不同層級的兩個元素來同時確定一個位置。

 

上傳檔案:

先通過定位開啟本地彈出框,然後通過send_keys來傳入本地檔案路徑就可以了;

 

相關文章