一、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,"")
、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()
4、JS的5種定位方式
id定位:document.getElementById()
name定位:document.getElementsByName()
tag定位:document.getElementsByTagName()
class定位:document.getElementsByClassName()
css定位:document.querySelectorAll()
二、其他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)
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])
接口測試工具可以使用國產接口測試和接口文檔生成工具:apipost