摘要:概述是一款開源的自動化框架,模擬用戶操作瀏覽器的行為,主要用于界面自動化瀏覽器兼容性測試。將瀏覽器原生的封裝成,作為編程語言與瀏覽器通信的橋梁,從而達到操作瀏覽器的目的。
Selenium是一款開源的Web自動化框架,模擬用戶操作瀏覽器的行為,主要用于界面自動化、瀏覽器兼容性測試。
優點:
1、跨平臺,如:Windows、Linux 和 Mac等;
2、支持各種瀏覽器,如:Chrome、Firefox、Edge、IE、Opear等;
3、完全開源。
webdriver:
將瀏覽器原生的API封裝成WebDriver API ,作為編程語言與瀏覽器通信的橋梁,從而達到操作瀏覽器的目的。
注:不同的瀏覽器,需要不同的webdriver,且webdriver的版本號與瀏覽器版本號需對應。
導包:
from selenium import webdriver
本文以Chrome瀏覽器為例
driver = webdriver.Chrome(executable_path="driver路徑")
將webdriver放置路徑添加環境變量:
環境變量添加步驟:桌面—>我的電腦—>屬性—>高級系統設置—>環境變量—>系統變量找到path并選中—>點擊編輯—>新建—>保存,如下步驟:
推薦:一般直接將對應瀏覽器版本的driver文件放置在在python的安裝目錄下,省去再次添加環境變量(本人常用方法)。
設置環境變量后,可不用再次指定driver路徑:
driver = webdriver.Chrome()
driver.get("http://xxxx")
driver.maximize_window() # 瀏覽器最大化driver.minimize_window() # 瀏覽器最小化driver.set_window_size(1980,1080) # 指定瀏覽器大小
options = webdriver.ChromeOptions()options.add_argument("--headless") # 設置無界面driver=webdriver.Chrome(chrome_options=options)
close():關閉當前當前瀏覽器窗口
quit():關閉所有頁面,即關閉瀏覽器
6、其它操作
前進:driver.forward()
后退:driver.back()
刷新:driver.refresh()
driver.find_element_by_id()driver.find_element_by_name()driver.find_element_by_css_selector()driver.find_element_by_tag_name()driver.find_element_by_class_name()driver.find_element_by_xpath()driver.find_element_by_link_text()driver.find_element_by_partial_link_text():模糊查詢
注:查找多個元素:將上述定位方法中的element改為elements即可,如:driver.find_elements_by_name(),唯一屬性id除外
**絕對路徑:**以“/”表示,從HTML標簽逐層向下尋找,如:/html/body/table/tbody/tr[2]/td[2]/div/div[2]/table[2]/thead/tr/th[1]
**相對路徑:**以“//”表示,表示任意位置,依據給出的路徑匹配節點
如://*[@id=“fileID”]
常用函數定位法:
使用contains方法,如:xpath=//input[contains(@id,‘abcd’)]
使用text()方法,如:xpath=//button[text()=‘保存’]
使用starts-with方法(同理還有:ends-with),多用于元素屬性部分發生變化的情況,如:
# 如:id=abcd12312sdfsf342xpath=//input[starts-with(@id,"abcd")]
一個元素需要通過多個屬性值定位,可以用“and”,如:
//span[@id="fileID" and @class="classname"]
常用的包含以下幾種:
類選擇:find_element_by_css_selector(".slg")
id選擇:find_element_by_css_selector("#su")
標簽選擇:find_element_by_css_selector(“input”)
屬性選擇:find_element_by_css_selector("[name=‘kw’]")
層級關系:
find_element_by_css_selector(“span>input”)
find_element_by_css_selector(“form>input:nth-child(2)”) #查找form標簽下第2個input元素
組合選擇:find_element_by_css_selector(“form.fm>span>input.slg”)
其它方式:
find_element_by_css_selector("[class*=swait_lg]"),查找class屬性包含“swait_lg”
find_element_by_css_selector("[class^=bba]"),以“bba”開頭
find_element_by_css_selector("[class$=abb]"),以“abb”結尾
…
點擊:click()
清除原有內容:clear()
輸入值:send_keys()
獲取內容:text
獲取元素屬性:get_attribute()
判斷元素是否顯示:is_displayed()
1、轉移到彈窗:
ele = driver.switch_to.alertele.accept() # 接受ele.text # 獲取彈窗內容ele.dismiss() # 退出或取消
2、頁內焦點切換: driver.switch_to.frame(frame)
退出當前焦點窗口到原窗口:driver.switch_to.default_content()
3、多窗口切換:
driver.switch_to.window(name)handles=driver.window_handles()driver.switch_to.window(handles[-1])
selenium有3種等待方式:
1、強制等待
time.sleep(2)
2、顯示等待(局部,針對某個元素)
WebdriverWait(driver,5,0.5).until(lambda driver:driver.find_element_by_xpath())
3、隱式等待(全局,可解決大部分的元素等待問題)
driver.implicitly_wait(20)
1.截取整個網頁:
driver.get_screenshot_as_base64() # 保存的是base64的編碼格式driver.save_screenshot("XX/XX.png") # 如果在alert之類的彈出對話框出現后截圖,程序會拋出異常driver.get_screenshot_as_png() # 保存的是二進制數據,需要寫成圖片文件保存driver.get_screenshot_as_file("XX/XX.png") # 獲取當前window的截圖,截圖成功返回True,出現IOError的時候返回False
2.截小圖:
ele.screenshot()ele = driver.find_element_by_id("msg")ele.screenshot("./3.png")
常用工具:Actionchains、pymouse、pykeyboard、pyautogui
1.Actionchains常用鼠標操作:
單機:click()
雙擊:double_click()
移動到某個元素上:move_to_element
在某個元素上懸停:click_and_hold
將一個元素拖到另一個元素上:drag_and_drop
用法:
from selenium.webdriver.common.action_chains import ActionChainsActionChains(driver).context_click(driver.find_element_by_id("su")).perform()
注:鼠標的所有事件,必須使用perform()執行所有ActionChains中存儲的行為
2.鍵盤操作:
from selenium.webdriver.common.keys import Keyssend_keys(Keys.ENTER) # 鍵盤的回車事件send_keys(Keys.BACKSPACE) # 刪除,回退# 組合使用send_keys(Keys.CONTROL,"a") # 全選send_keys(Keys.CONTROL,"c") # 復制
用法:driver.execute_script(js代碼)
修改只讀屬性,如:driver.execute_script("document.getElementById(/"su/").readOnly=0;")
移動到頁面底部
driver.excute_script("window.scrollTo(0,document.body.scrollHeight)")
注:本文是本人工作中學習及使用到的selenium常用方法,如有錯誤之處歡迎指出
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119611.html
摘要:當你使用時,你必須注意,如果匹配超過一個元素,只返回第一個元素。操作打開一個頁面現在設置,這個在域名根目錄下生效現在獲取所有當前下可獲得的查找元素以上是相關的基礎內容,下一期更新使用頁面對象模式的示例一起越來越好 今天想跟大家分享的是:關于selenium的自動化測試一些基礎的東西 安裝環境 1.Python環境安裝完成后通過Windows命令提示符CMD輸入python,查看是否安裝...
摘要:不同目標的自動化測試有不同的測試工具,但是任何工具都無不例外的需要編程的過程,實現源代碼,也可以稱之為測試腳本。 寫在最前面:目前自動化測試并不屬于新鮮的事物,或者說自動化測試的各種方法論已經層出不窮,但是,能夠在項目中持之以恒的實踐自動化測試的團隊,卻依舊不是非常多。有的團隊知道怎么做,做的還不夠好;有的團隊還正在探索和摸索怎么做,甚至還有一些多方面的技術上和非技術上的舊系統需要重構……...
摘要:安裝的安裝就不再科普,自行百度。運行這段代碼,你會發現自動打開,并訪問了百度,在輸入框輸入了,緊接著跳轉到了搜索的結果頁。 最近寫項目的時候,用到了Selenium,一個 Web 端的自動化測試工具,直接運行在瀏覽器中,用來模擬用戶操作。 Selenium 不僅僅可以用作自動化測試,還有很多種玩法,比如 Python 的爬蟲,實現某商品的秒殺,甚至是頁游外掛腳本,只要是基于瀏覽器操作,...
摘要:然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅動瀏覽器獲得的解析的能力。所以說這貨在動態爬取方面簡直是掛逼級別的存在,相較于手動分析更簡單易用,節省分析打碼時間。一旦設置了隱式等待時間,它的作用范圍就是對象實例的整個生命周期。 selenium——自動化測試工具,專門為Web應用程序編寫的一個驗收測試工具,測試其兼容性,功能什么的。然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅動瀏...
閱讀 917·2021-09-09 09:32
閱讀 2883·2021-09-02 10:20
閱讀 2706·2021-07-23 11:24
閱讀 835·2019-08-30 15:54
閱讀 3638·2019-08-30 15:54
閱讀 1351·2019-08-30 11:02
閱讀 2852·2019-08-26 17:40
閱讀 1132·2019-08-26 13:55