【Selenium2+Python】常用操作


 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM