python+selenium方法大全

測試人生路發表於2021-01-19

一、selenium定位方法


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


1)find_element_by_id() 根據id屬性進行定位

2)find_element_by_name() 根據name元素進行定位

3)find_element_by_class_name() 根據class的名字進行定位

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

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

6)find_element_by_tag_name() 根據標籤名進行定位

7)find_element_by_link_text() 根據完整的超連結文字進行定位

8)find_element_by_partial_link_text() 根據部分超連結文字進行定位


2、By定位


by定位需要需要匯入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,"")12345678


3、elements複數定位


八種基礎的定位方法都有對應的複數形式

id複數定位find_elements_by_id()
name複數定位find_elements_by_name()
class複數定位find_elements_by_class_name()
tag複數定位find_elements_by_tag_name()
link複數定位find_elements_by_link_text()
partial_link複數定位find_elements_by_partial_link_text()
xpath複數定位find_elements_by_xpath()
css複數定位find_elements_by_css_selector()12345678


4、JS的5種定位方式


id定位:document.getElementById()
name定位:document.getElementsByName()
tag定位:document.getElementsByTagName()
class定位:document.getElementsByClassName()
css定位:document.querySelectorAll()12345


二、其他selenium操作


1、常用庫匯入
1)from selenium import webdriver 匯入webdriver模組

2)from selenium.webdriver import ActionChains 匯入動作鏈類,動作鏈可以儲存滑鼠的動作,並一起執行

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

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

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)瀏覽器相關操作

建立瀏覽器物件  driver = webdriver.xxx()

視窗最大化    maximize_window()

獲取瀏覽器尺寸  get_window_size()

設定瀏覽器尺寸  set_window_size()

獲取瀏覽器位置  get_window_position()

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

關閉當前標籤/視窗 close()

關閉所有標籤/視窗  quit()


2)頁面相關操作


請求某個url      driver.get(url)

重新整理頁面操作     refresh()

回退到之前的頁面   back()

前進到之後的頁面   forward()

獲取當前訪問頁面url  current_url

獲取當前瀏覽器標題  title

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

網頁原始碼       page_source


3、元素的操作


點選操作    element.click()

清空輸入框   element.clear()

輸入框輸入資料 element.send_keys(data)

獲取文字內容(既開閉標籤之間的內容)  element.text

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


4、滑鼠和鍵盤操作


滑鼠操作需要匯入類,見第一部分,然後建立物件ActionChains(driver),鍵盤操作匯入類

滑鼠右擊
el = driver.find_element_by_xxx(value)
context_click(el)

滑鼠雙擊
el = driver.find_element_by_xxx(value)
ActionChains(driver).double_click(el).perform()

滑鼠懸停
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鍵(Enter)

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

send_keys(Keys.CONTROL,‘c’) 複製(Ctrl+C)

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

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


5、彈出框操作


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

接收警告     accept()

關閉警告     dismiss()

傳送文字到警告框 send_keys(data)


6、下拉框操作


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

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

透過值選擇(option標籤的一個屬性值)  select_by_value()

透過文字選擇(下拉框的值)  select_by_visible_text()

檢視所有已選  all_selected_options

檢視第一個已選  first_selected_option

檢視是否是多選  is_multiple

檢視選項元素列表  options

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


7、捲軸操作


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

driver.execute_script(js)

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

driver.execute_script(js)


8、cookies操作


獲取所有cookies  get_cookies()

獲取key對應的值  get_cookie(key)

設定cookies  add_cookie(cookie_dict)

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

刪除所有cookie  delete_all_cookies()


9、多標籤/多視窗、多表單/多框架切換


多表單/多框架切換

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

定位到表單元素,再切換進入

el = driver.find_element_by_xxx(value)

driver.switch_to.frame(el)

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

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

多標籤/多視窗之間的切換

獲取所有視窗的控制程式碼   handles = driver.window_handlers

透過視窗的控制程式碼進入的視窗  driver.switch_to.window(handles[n])

介面測試工具可以使用國產介面測試和介面文件生成工具:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69986023/viewspace-2751186/,如需轉載,請註明出處,否則將追究法律責任。

相關文章