【Selenium2+Python】經常使用操做

 

【Selenium2+Python】經常使用操做

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()

相關文章
相關標籤/搜索