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文檔中的元素位置,通過元素的路徑來完成對元素的查找
5)find_element_by_css_selector() CSS屬性定位可以比較靈活地選擇控件的任意屬性,定位方式也會比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ǔ)的定位方法都有對應(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)入動作鏈類,動作鏈可以儲存鼠標(biāo)的動作,并一起執(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)建瀏覽器對象 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)操作
請求某個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、元素的操作
點擊操作 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)建對象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)簽的一個屬性值) 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對應(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])
接口測試工具可以使用國產(chǎn)接口測試和接口文檔生成工具:apipost
Python Selenium
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。