1、瀏覽器的操做css
from selenium import Webdriver //從selenium庫導入Webdriver包web
browser = Webdriver.Chrome(***\chromedriver.exe) //打開谷歌瀏覽驅動chrome
browser.get("http://www.baidu.com") //向瀏覽器發送網址瀏覽器
browser.maximize_window() //瀏覽器最大化框架
from time import sleep //從time模塊中導入sleep函數函數
sleep(2) //睡眠2秒動畫
browser.quit() //關閉瀏覽器對象ui
browser.set_window_size(480, 800) //設置瀏覽器寬480,高800spa
browser.back() //瀏覽器後退orm
browser.forward() //瀏覽器前進
2、簡單的對象定位
網頁元素:包括文本框、靜態文字、圖片、音頻、動畫、視頻,也就是網頁中各類控件
元素的八大定位方法
find_element_by_id() //根據元素的id定位,具備惟一性,較爲準確
find_element_by_name() //根據元素的name定位,具備惟一性,較爲準確
find_element_by_class_name() //根據元素的class_name定位,不許確,存在重複性太多
find_element_by_tag_name() //根據tag_name定位,不許確
find_element_by_link_text() //根據連接的文本定位,較爲準確
find_element_by_partial_link_text() //根據部分連接文本定位,文本太長時採用
find_element_by_xpath() //絕對路徑定位,優勢是定位較爲準確,缺點是目錄層級太多時,很長,層級容易發生變化,不夠健壯
find_element_by_css_selector()
3、經常使用的元素操做
clear() 清除元素的輸入內容
例如:browser.find_element_by_id("kw").clear()
send_keys() 在元素上模擬按鍵輸入
例如:browser.find_element_by_id("kw").send_keys(u"百度")
click() 單擊元素
例如:browser.find_element_by_id("su").click()
submit() 提交表單,做用同click
例如:browser.find_element_by_id("kw").submit()
WebElement接口經常使用方法
size返回元素尺寸,使用時無括號
例如:r_size=browser.find_element_by_id("kw").size
text()返回元素文本,使用時無括號
例如:r_text=browser.find_element_by_id("cp").text
get_attribute() 獲取該元素任意屬性的內容
例如:r_attribute=browser.find_element_by_id("kw").get_attribute("class")
4、鼠標事件
一、context_click() //右擊
例如:from selenium.webdriver.common.action_chains import ActionChains //導入ActionChains函數
ActionChains(driver).context_click(element_id).perform() //右擊事件,ActionChains用於生成用戶的行爲;全部的行爲都存儲在 actionchains 對象。
經過 perform()執行存儲的行爲。context_click(right_element) 右擊操做,括號內的參數是元素的位置。
perfrome()一樣也是 ActionChains 類提供的的方法,一般與ActionChains()配合使用
double_click() //雙擊 drag_and_drop() //拖動 move_to_element() //鼠標懸停在一個元素上 click_and_hold() 按下鼠標左鍵在一個元素上。這四個操做方法都是同樣。
二、鍵盤操做
使用鍵盤操做,要導入Keys類包
常常用到的鍵盤操做有:
send_keys(Keys.BACK_SPACE) 刪除鍵
send_keys(Keys.SPACE) 空格鍵
send_keys(Keys.TAB) 製表鍵
send_keys(Keys.ESCAPE) 回退鍵ESC
send_keys(Keys.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)
5、層級定位
層級定位:先定位父元素,而後再經過父元素定位子孫元素
例如:driver.find_element_by_id("u1").find_element_by_link_text(u"新聞").click()
6、定位frame中的元素
在 web 應用中常常會出現 frame 嵌套的應用,假設頁面上有 A、B 兩個 frame,其中 B 在 A 內,那麼定位B中的內容則須要先到A,而後再到B
例如:browser.switch_to.frame(id)
browser.switch_to.frame(name)
7、瀏覽器多個窗口的處理
current_window_handle //得到當前句柄
window_handles //得到全部的句柄
switch_to_window() //用於處理多個窗口的操做方法,與swith_to_frame()是相似,switch_to_window()用於處理多個窗口切換,swith_to_frame()是處理多框架的切換
句柄:是系統分配給窗口惟一標識,跟身份證同樣,用這個句柄(一個長整型long),能夠找到這個窗口
driver = webdriver.Chrome(r'F:\tools\chromedriver.exe')
driver.get('http://www.baidu.com')
#獲取百度的句柄
first_handle = driver.current_window_handle
print first_handle
driver.find_element_by_link_text(u'登陸').click()
sleep(3)
driver.find_element_by_link_text(u'當即註冊').click()
sleep(3)
#獲取全部的句柄
all_handles = driver.window_handles
#遍歷全部的句柄
for handle in all_handles:
if handle != first_handle:
second_handle = handle
#跳轉到註冊窗口
driver.switch_to_window(second_handle)
print driver.title
driver.find_element_by_name('userName').send_keys('chencghu')
sleep(3)
driver.close()
八.alert彈框處理alert=browser.switch_to_alert() #切換到彈框界面alert.accept() #接受警告信息print alert.text() #獲得文本信息並打印alert.dismiss() #取消對話框(若是有的話)alert.send_keys() #輸入值(若是有的話)