Webdriver中比較經常使用的操做元素的方法:css
clear() 清除輸入框的默認內容web
send_keys("xxx") 在一個輸入框裏輸入xx內容app
——若是輸入中文,則須要在腳本開頭聲明編碼爲utf-8,而後在中文字符前面加u(如:send_keys(u"中文內容"))ssh
click() 點擊一個按鈕ui
submit() 提交表單編碼
WebElement接口經常使用方法:url
size 返回元素的尺寸spa
——如:size = driver.find_element_by_id("id").sizeorm
text 獲取元素的文本對象
——如:text = driver.find_element_by_id("id").text
get_attribute(name) 得到屬性值
——如:attribute = driver.find_element_by_id("id").get_attribute(‘type‘)
is_displayed() 設置該元素是否用戶可見
——如:isshow = driver.find_element_by_id("id").is_displayed()
ActionChains類鼠標操做的經常使用方法:
引入ActionChains類:from selenium.webdriver.common.action_chains import ActionChains
context_click() 右擊
——如:RightClick = driver.find_element_by_id("id")
ActionChains(driver).context_click(RightClick).perform()
double_click() 雙擊
——如:DoubleClick = driver.find_element_by_name("name")
ActionChains(driver).double_click(DoubleClick).perform()
drag_and_drop(source, target) 鼠標拖放
——source:鼠標按下的源元素;target:鼠標釋放的目標元素
——如:element = driver.find_element_by_name("name")
target = driver.find_element_by_name("name")
ActionChains(driver).drag_and_drop(element, target).perform()
move_to_element() 鼠標懸停在一個元素上
——如:above = driver.find_element_by_xpath("xpath路徑")
ActionChains(driver).move_to_element(above).perform()
click_and_hold() 按下鼠標左鍵在一個元素上
——如:left = driver.find_element_by_name("name")
ActionChains(driver).click_and_hold(left).perform()
鍵盤事件:
引入Keys類包:from selenium.webdriver.common.keys import Keys
send_keys() 輸入框輸入內容
——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.BACK_SPACE) 向左刪除一個字符 ——如:driver.find_element_by_id("id").send_keys("XXX")
send_keys(Keys.SPACE) 輸入空格
——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)
send_keys(Keys.CONTROL,‘a‘) ctrl+a 全選輸入框的內容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘a‘)
send_keys(Keys.CONTROL,‘x‘) ctrl+x 剪切輸入框的內容
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘x‘)
send_keys(Keys.CONTROL,‘v‘) ctrl+v 粘貼到輸入框
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘v‘)
send_keys(Keys.ENTER) 回車代替點擊
——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)
send_keys(Keys.TAB) 製表鍵(Tab)
——如:driver.find_element_by_id("id").send_keys(Keys.TAB)
send_keys(Keys.ESCAPE) 回退鍵(Esc)
——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)
send_keys(Keys.CONTROL,‘c‘) 複製
——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘c‘)
打印信息
#得到title並打印
title = driver.title
print title
#拿當前title名稱進行預期比較
if title == u"百度一下,你就知道":
print "title yes!"
else:
print "title no!"
#得到當前URL並打印
url = driver.current_url
print url
等待時間
#導入 WebDriverWait 包
from selenium.webdriver.support.ui import WebDriverWait
#導入 time 包
import time
sleep() 設置固定等待時間
——如:time.sleep(5) #等待5秒
implicitly_wait() 等待一個元素被發現,或一個命令完成,超出了設置時間則拋出異常
——如:driver.implicitly_wait(30)
driver.find_element_by_id("id").click()
WebDriverWait() 在設置時間內,默認每隔一段時間檢測檢測一次當前頁面元素是否存在,若是超過設置時間檢測不到則拋出異常
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
——driver:WebDriver 的驅動程序(Ie, Firefox, Chrome 或遠程)
——timeout:最長超時時間,默認以秒爲單位
——poll_frequency:休眠時間的間隔(步長)時間,默認爲 0.5 秒
——ignored_exceptions:超時後的異常信息,默認狀況下拋 NoSuchElementException 異常
——如1:element = WebDriverWait(driver, 10).until(lambda x : x.find_element_by_id("id"))
element.send_keys("selenium")
——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(「Id」))
is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(「someId」).is_displayed())
WebDriverWai()通常由 unit()或 until_not()方法配合使用:
——until(method, message=’’)
調用該方法提供的驅動程序做爲一個參數,直到返回值不爲 False。
——until_not(method, message=’’)
調用該方法提供的驅動程序做爲一個參數,直到返回值爲 False。
定位一組對象
#選擇當前頁面上全部tag name爲input的元素
inputs = driver.find_elements_by_tag_name(‘input‘)
#從中過濾出type爲checkbox的元素,並勾選上
for input in inputs:
if input.get_attribute(‘type‘) == ‘checkbox‘:
input.click()
#使用CSS定位選擇全部type爲checkbox的元素,並勾選上
checkboxes = driver.find_elements_by_css_selector(‘input[type=checkbox]‘)
for checkbox in checkboxes:
checkbox.click()
#把最後一個checkbox的勾去掉 pop()爲空則是最後一個
driver.find_elements_by_css_selector(‘input[type=checkbox]‘).pop().click()