成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Selenium常用方法(Python)

Aceyclee / 986人閱讀

摘要:概述是一款開(kāi)源的自動(dòng)化框架,模擬用戶操作瀏覽器的行為,主要用于界面自動(dòng)化瀏覽器兼容性測(cè)試。將瀏覽器原生的封裝成,作為編程語(yǔ)言與瀏覽器通信的橋梁,從而達(dá)到操作瀏覽器的目的。

Selenium概述

Selenium是一款開(kāi)源的Web自動(dòng)化框架,模擬用戶操作瀏覽器的行為,主要用于界面自動(dòng)化、瀏覽器兼容性測(cè)試。
優(yōu)點(diǎn):
1、跨平臺(tái),如:Windows、Linux 和 Mac等;
2、支持各種瀏覽器,如:Chrome、Firefox、Edge、IE、Opear等;
3、完全開(kāi)源。
webdriver:
將瀏覽器原生的API封裝成WebDriver API ,作為編程語(yǔ)言與瀏覽器通信的橋梁,從而達(dá)到操作瀏覽器的目的。

注:不同的瀏覽器,需要不同的webdriver,且webdriver的版本號(hào)與瀏覽器版本號(hào)需對(duì)應(yīng)。

Selenium操作瀏覽器

1.啟動(dòng)瀏覽器

導(dǎo)包:

from selenium import webdriver

1)直接指定driver的路徑

本文以Chrome瀏覽器為例

driver = webdriver.Chrome(executable_path="driver路徑")

2)設(shè)置driver的環(huán)境變量

將webdriver放置路徑添加環(huán)境變量:
環(huán)境變量添加步驟:桌面—>我的電腦—>屬性—>高級(jí)系統(tǒng)設(shè)置—>環(huán)境變量—>系統(tǒng)變量找到path并選中—>點(diǎn)擊編輯—>新建—>保存,如下步驟:


推薦:一般直接將對(duì)應(yīng)瀏覽器版本的driver文件放置在在python的安裝目錄下,省去再次添加環(huán)境變量(本人常用方法)。
設(shè)置環(huán)境變量后,可不用再次指定driver路徑:

driver = webdriver.Chrome()

2.打開(kāi)網(wǎng)頁(yè)url

driver.get("http://xxxx")

3.瀏覽器其它控制

driver.maximize_window()  # 瀏覽器最大化driver.minimize_window()  # 瀏覽器最小化driver.set_window_size(1980,1080)  # 指定瀏覽器大小

4.無(wú)界面操作

options = webdriver.ChromeOptions()options.add_argument("--headless") # 設(shè)置無(wú)界面driver=webdriver.Chrome(chrome_options=options)

5.關(guān)閉瀏覽器:

close():關(guān)閉當(dāng)前當(dāng)前瀏覽器窗口
quit():關(guān)閉所有頁(yè)面,即關(guān)閉瀏覽器
6、其它操作
前進(jìn):driver.forward()
后退:driver.back()
刷新:driver.refresh()

元素定位

1.常規(guī)定位方法

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():模糊查詢

注:查找多個(gè)元素:將上述定位方法中的element改為elements即可,如:driver.find_elements_by_name(),唯一屬性id除外

2.xpath的定位方法

**絕對(duì)路徑:**以“/”表示,從HTML標(biāo)簽逐層向下尋找,如:/html/body/table/tbody/tr[2]/td[2]/div/div[2]/table[2]/thead/tr/th[1]
**相對(duì)路徑:**以“//”表示,表示任意位置,依據(jù)給出的路徑匹配節(jié)點(diǎn)
如://*[@id=“fileID”]
常用函數(shù)定位法:
使用contains方法,如:xpath=//input[contains(@id,‘a(chǎn)bcd’)]
使用text()方法,如:xpath=//button[text()=‘保存’]
使用starts-with方法(同理還有:ends-with),多用于元素屬性部分發(fā)生變化的情況,如:

# 如:id=abcd12312sdfsf342xpath=//input[starts-with(@id,"abcd")]

一個(gè)元素需要通過(guò)多個(gè)屬性值定位,可以用“and”,如:

//span[@id="fileID" and @class="classname"]

3.css定位

常用的包含以下幾種:
類選擇:find_element_by_css_selector(".slg")
id選擇:find_element_by_css_selector("#su")
標(biāo)簽選擇:find_element_by_css_selector(“input”)
屬性選擇:find_element_by_css_selector("[name=‘kw’]")
層級(jí)關(guān)系:
find_element_by_css_selector(“span>input”)
find_element_by_css_selector(“form>input:nth-child(2)”) #查找form標(biāo)簽下第2個(gè)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”開(kāi)頭
find_element_by_css_selector("[class$=abb]"),以“abb”結(jié)尾

元素操作

點(diǎn)擊:click()
清除原有內(nèi)容:clear()
輸入值:send_keys()
獲取內(nèi)容:text
獲取元素屬性:get_attribute()
判斷元素是否顯示:is_displayed()

焦點(diǎn)轉(zhuǎn)換

1、轉(zhuǎn)移到彈窗:

ele = driver.switch_to.alertele.accept() # 接受ele.text # 獲取彈窗內(nèi)容ele.dismiss() # 退出或取消

2、頁(yè)內(nèi)焦點(diǎn)切換: driver.switch_to.frame(frame)
退出當(dāng)前焦點(diǎn)窗口到原窗口:driver.switch_to.default_content()
3、多窗口切換:

driver.switch_to.window(name)handles=driver.window_handles()driver.switch_to.window(handles[-1])

等待

selenium有3種等待方式:
1、強(qiáng)制等待

time.sleep(2)

2、顯示等待(局部,針對(duì)某個(gè)元素)

WebdriverWait(driver,5,0.5).until(lambda driver:driver.find_element_by_xpath())

3、隱式等待(全局,可解決大部分的元素等待問(wèn)題)

driver.implicitly_wait(20)

截圖

1.截取整個(gè)網(wǎng)頁(yè):

driver.get_screenshot_as_base64()  # 保存的是base64的編碼格式driver.save_screenshot("XX/XX.png")  # 如果在alert之類的彈出對(duì)話框出現(xiàn)后截圖,程序會(huì)拋出異常driver.get_screenshot_as_png()  # 保存的是二進(jìn)制數(shù)據(jù),需要寫成圖片文件保存driver.get_screenshot_as_file("XX/XX.png")  # 獲取當(dāng)前window的截圖,截圖成功返回True,出現(xiàn)IOError的時(shí)候返回False

2.截小圖:

ele.screenshot()ele = driver.find_element_by_id("msg")ele.screenshot("./3.png")

鼠標(biāo)鍵盤操作

常用工具:Actionchains、pymouse、pykeyboard、pyautogui
1.Actionchains常用鼠標(biāo)操作:
單機(jī):click()
雙擊:double_click()
移動(dòng)到某個(gè)元素上:move_to_element
在某個(gè)元素上懸停:click_and_hold
將一個(gè)元素拖到另一個(gè)元素上:drag_and_drop
用法:

from selenium.webdriver.common.action_chains import ActionChainsActionChains(driver).context_click(driver.find_element_by_id("su")).perform()

注:鼠標(biāo)的所有事件,必須使用perform()執(zhí)行所有ActionChains中存儲(chǔ)的行為

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")  # 復(fù)制

調(diào)用JS方法

用法:driver.execute_script(js代碼)
修改只讀屬性,如:driver.execute_script("document.getElementById(/"su/").readOnly=0;")
移動(dòng)到頁(yè)面底部

driver.excute_script("window.scrollTo(0,document.body.scrollHeight)")

注:本文是本人工作中學(xué)習(xí)及使用到的selenium常用方法,如有錯(cuò)誤之處歡迎指出

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119611.html

相關(guān)文章

  • Selenium自動(dòng)化測(cè)試網(wǎng)頁(yè)

    摘要:當(dāng)你使用時(shí),你必須注意,如果匹配超過(guò)一個(gè)元素,只返回第一個(gè)元素。操作打開(kāi)一個(gè)頁(yè)面現(xiàn)在設(shè)置,這個(gè)在域名根目錄下生效現(xiàn)在獲取所有當(dāng)前下可獲得的查找元素以上是相關(guān)的基礎(chǔ)內(nèi)容,下一期更新使用頁(yè)面對(duì)象模式的示例一起越來(lái)越好 今天想跟大家分享的是:關(guān)于selenium的自動(dòng)化測(cè)試一些基礎(chǔ)的東西 安裝環(huán)境 1.Python環(huán)境安裝完成后通過(guò)Windows命令提示符CMD輸入python,查看是否安裝...

    elva 評(píng)論0 收藏0
  • 以后再有人問(wèn)你selenium是什么,你就把這篇文章給他

    摘要:不同目標(biāo)的自動(dòng)化測(cè)試有不同的測(cè)試工具,但是任何工具都無(wú)不例外的需要編程的過(guò)程,實(shí)現(xiàn)源代碼,也可以稱之為測(cè)試腳本。 寫在最前面:目前自動(dòng)化測(cè)試并不屬于新鮮的事物,或者說(shuō)自動(dòng)化測(cè)試的各種方法論已經(jīng)層出不窮,但是,能夠在項(xiàng)目中持之以恒的實(shí)踐自動(dòng)化測(cè)試的團(tuán)隊(duì),卻依舊不是非常多。有的團(tuán)隊(duì)知道怎么做,做的還不夠好;有的團(tuán)隊(duì)還正在探索和摸索怎么做,甚至還有一些多方面的技術(shù)上和非技術(shù)上的舊系統(tǒng)需要重構(gòu)……...

    Keven 評(píng)論0 收藏0
  • 分享一個(gè)神器,Selenium 自動(dòng)化測(cè)試工具

    摘要:安裝的安裝就不再科普,自行百度。運(yùn)行這段代碼,你會(huì)發(fā)現(xiàn)自動(dòng)打開(kāi),并訪問(wèn)了百度,在輸入框輸入了,緊接著跳轉(zhuǎn)到了搜索的結(jié)果頁(yè)。 最近寫項(xiàng)目的時(shí)候,用到了Selenium,一個(gè) Web 端的自動(dòng)化測(cè)試工具,直接運(yùn)行在瀏覽器中,用來(lái)模擬用戶操作。 Selenium 不僅僅可以用作自動(dòng)化測(cè)試,還有很多種玩法,比如 Python 的爬蟲,實(shí)現(xiàn)某商品的秒殺,甚至是頁(yè)游外掛腳本,只要是基于瀏覽器操作,...

    jimhs 評(píng)論0 收藏0
  • Python 從零開(kāi)始爬蟲(八)——?jiǎng)討B(tài)爬取解決方案 之 selenium

    摘要:然而讓蟲師們垂涎的并不是以上的種種,而是其通過(guò)驅(qū)動(dòng)瀏覽器獲得的解析的能力。所以說(shuō)這貨在動(dòng)態(tài)爬取方面簡(jiǎn)直是掛逼級(jí)別的存在,相較于手動(dòng)分析更簡(jiǎn)單易用,節(jié)省分析打碼時(shí)間。一旦設(shè)置了隱式等待時(shí)間,它的作用范圍就是對(duì)象實(shí)例的整個(gè)生命周期。 selenium——自動(dòng)化測(cè)試工具,專門為Web應(yīng)用程序編寫的一個(gè)驗(yàn)收測(cè)試工具,測(cè)試其兼容性,功能什么的。然而讓蟲師們垂涎的并不是以上的種種,而是其通過(guò)驅(qū)動(dòng)瀏...

    fobnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<