python+selenium方法大全

一、selenium定位方法

1、WebDriver8種基本元素定位方式

1)find_element_by_id() 根據(jù)id屬性進(jìn)行定位

2)find_element_by_name() 根據(jù)name元素進(jìn)行定位

3)find_element_by_class_name() 根據(jù)class的名字進(jìn)行定位

4)find_element_by_xpath() xpath是XML路徑語言,它可以用來確定xml文檔中的元素位置,通過元素的路徑來完成對(duì)元素的查找

5)find_element_by_css_selector() CSS屬性定位可以比較靈活地選擇控件的任意屬性,定位方式也會(huì)比xpath快

6)find_element_by_tag_name() 根據(jù)標(biāo)簽名進(jìn)行定位

7)find_element_by_link_text() 根據(jù)完整的超鏈接文字進(jìn)行定位

8)find_element_by_partial_link_text() 根據(jù)部分超鏈接文字進(jìn)行定位

2、By定位

by定位需要需要導(dǎo)入By類:from selenium.webdriver.common.by import By

find_element(By.ID,"")

find_element(By.NAME,"")

find_element(By.CLASS_NAME,"")

find_element(By.TAG_NAME,"")

find_element(By.LINK_TEXT,u" ")

find_element(By.PARTIAL_LINK_TEXT,u" ")

find_element(By.XPATH,"")

find_element(By.CSS_SELECTOR,"")

3、elements復(fù)數(shù)定位

八種基礎(chǔ)的定位方法都有對(duì)應(yīng)的復(fù)數(shù)形式

id復(fù)數(shù)定位find_elements_by_id()

name復(fù)數(shù)定位find_elements_by_name()

class復(fù)數(shù)定位find_elements_by_class_name()

tag復(fù)數(shù)定位find_elements_by_tag_name()

link復(fù)數(shù)定位find_elements_by_link_text()

partial_link復(fù)數(shù)定位find_elements_by_partial_link_text()

xpath復(fù)數(shù)定位find_elements_by_xpath()

css復(fù)數(shù)定位find_elements_by_css_selector()

4、JS的5種定位方式

id定位:document.getElementById()

name定位:document.getElementsByName()

tag定位:document.getElementsByTagName()

class定位:document.getElementsByClassName()

css定位:document.querySelectorAll()

二、其他selenium操作

1、常用庫導(dǎo)入

1)from selenium import webdriver 導(dǎo)入webdriver模塊

2)from selenium.webdriver import ActionChains 導(dǎo)入動(dòng)作鏈類,動(dòng)作鏈可以儲(chǔ)存鼠標(biāo)的動(dòng)作,并一起執(zhí)行

3)from selenium.webdriver.common.key import Key 鍵盤操作使用的是Keys類,一般配合send_keys使用

4)from selenium.webdriver.support.select import Select 下拉框的操作都交由Select類進(jìn)行處理

5)from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC 顯示等待使用的類

2、基本操作

1)瀏覽器相關(guān)操作

創(chuàng)建瀏覽器對(duì)象  driver = webdriver.xxx()

窗口最大化    maximize_window()

獲取瀏覽器尺寸  get_window_size()

設(shè)置瀏覽器尺寸  set_window_size()

獲取瀏覽器位置  get_window_position()

設(shè)置瀏覽器位置  set_window_position(x,y)

關(guān)閉當(dāng)前標(biāo)簽/窗口 close()

關(guān)閉所有標(biāo)簽/窗口  quit()

2)頁面相關(guān)操作

請(qǐng)求某個(gè)url      driver.get(url)

刷新頁面操作     refresh()

回退到之前的頁面   back()

前進(jìn)到之后的頁面   forward()

獲取當(dāng)前訪問頁面url  current_url

獲取當(dāng)前瀏覽器標(biāo)題  title

保存圖片       get_screenshot_as_png()/get_screenshot_as_file(file)

網(wǎng)頁源碼       page_source

3、元素的操作

點(diǎn)擊操作    element.click()

清空輸入框   element.clear()

輸入框輸入數(shù)據(jù) element.send_keys(data)

獲取文本內(nèi)容(既開閉標(biāo)簽之間的內(nèi)容)  element.text

獲取屬性值(獲取element元素的value屬性的值)  element.get_attribute(value)

4、鼠標(biāo)和鍵盤操作

鼠標(biāo)操作需要導(dǎo)入類,見第一部分,然后創(chuàng)建對(duì)象ActionChains(driver),鍵盤操作導(dǎo)入類

鼠標(biāo)右擊

el = driver.find_element_by_xxx(value)

context_click(el)

鼠標(biāo)雙擊

el = driver.find_element_by_xxx(value)

ActionChains(driver).double_click(el).perform()

鼠標(biāo)懸停

el = driver.find_element_by_xxx(value)

ActionChains(driver).move_to_element(el).perform()

常用鍵盤操作

send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)

send_keys(Keys.SPACE) 空格鍵(Space)

send_keys(Keys.TAB) 制表鍵(Tab)

send_keys(Keys.ESCAPE) 回退鍵(Esc)

send_keys(Keys.ENTER) 回車鍵(Enter)

send_keys(Keys.CONTROL,‘a(chǎn)’) 全選(Ctrl+A)

send_keys(Keys.CONTROL,‘c’) 復(fù)制(Ctrl+C)

send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)

send_keys(Keys.CONTROL,‘v’) 粘貼(Ctrl+V)

5、彈出框操作

進(jìn)入到彈出框中  driver.switch_to.alert()

接收警告     accept()

關(guān)閉警告     dismiss()

發(fā)送文本到警告框 send_keys(data)

6、下拉框操作

將定位到的下拉框元素傳入Select類中  selobj = Select(element)

通過索引選擇,index 索引從 0 開始  select_by_index()

通過值選擇(option標(biāo)簽的一個(gè)屬性值)  select_by_value()

通過文本選擇(下拉框的值)  select_by_visible_text()

查看所有已選  all_selected_options

查看第一個(gè)已選  first_selected_option

查看是否是多選  is_multiple

查看選項(xiàng)元素列表  options

取消選擇   deselect_by_index() /deselect_by_value()/ deselect_by_visible_text()

7、滾動(dòng)條操作

js = "window.scrollTo(x,y) " x為水平拖動(dòng)距離,y為垂直拖動(dòng)舉例

driver.execute_script(js)

js= “var q=document.documentElement.scrollTop=n” n為從頂部往下移動(dòng)滾動(dòng)舉例

driver.execute_script(js)

8、cookies操作

獲取所有cookies  get_cookies()

獲取key對(duì)應(yīng)的值  get_cookie(key)

設(shè)置cookies  add_cookie(cookie_dict)

刪除指定名稱的cookie  delete_cookie(name)

刪除所有cookie  delete_all_cookies()

9、多標(biāo)簽/多窗口、多表單/多框架切換

多表單/多框架切換

直接使用id值切換進(jìn)表單   driver.switch_to.frame(value)

定位到表單元素,再切換進(jìn)入

el = driver.find_element_by_xxx(value)

driver.switch_to.frame(el)

跳回最外層的頁面  driver.switch_to.default_content()

跳回上層的頁面  driver.switch_to.parent_frame()

多標(biāo)簽/多窗口之間的切換

獲取所有窗口的句柄   handles = driver.window_handlers

通過窗口的句柄進(jìn)入的窗口  driver.switch_to.window(handles[n])

接口測(cè)試工具可以使用國(guó)產(chǎn)接口測(cè)試和接口文檔生成工具:apipost


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容