【Selenium2+Python】常用操作
Webdriver中比較常用的操作元素的方法:
clear() 清除輸入框的默認內容
send_keys("xxx") 在一個輸入框里輸入xx內容
——如果輸入中文,則需要在腳本開頭聲明編碼為utf-8,然后在中文字符前面加u(如:send_keys(u"中文內容"))
click() 點擊一個按鈕
submit() 提交表單
WebElement接口常用方法:
size 返回元素的尺寸
——如:size = driver.find_element_by_id("id").size
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()