欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中Selenium模塊的使用詳解

 更新時間:2020年10月09日 10:26:21   作者:謝公子  
這篇文章主要介紹了Python中Selenium模塊的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Selenium的介紹、配置和調(diào)用

Selenium(瀏覽器自動化測試框架) 是一個用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),F(xiàn)irefox,Safari,Google Chrome,Opera等。這個工具的主要功能包括:測試瀏覽器的兼容性——測試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測試系統(tǒng)功能——創(chuàng)建回歸測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。

  • 框架底層使用JavaScript模擬真實用戶對瀏覽器進(jìn)行操作。測試腳本執(zhí)行時,瀏覽器自動按照腳本代碼做出點擊,輸入,打開,驗證等操作,就像真實用戶所做的一樣,從終端用戶的角度測試應(yīng)用程序。
  • 使瀏覽器兼容性測試自動化成為可能,盡管在不同的瀏覽器上依然有細(xì)微的差別。
  • 使用簡單,可使用Java,Python等多種語言編寫用例腳本。

Selenium的配置

1、安裝 Selenium模塊:  pip  install  Selenium

2、下載瀏覽器驅(qū)動,Selenium3.x調(diào)用瀏覽器必須有一個webdriver驅(qū)動文件

Chrome驅(qū)動文件下載:點擊下載chromedrive

Firefox 驅(qū)動文件下載 :點解下載geckodriver

下載之后,解壓到任意目錄(路徑不要有中文)。

Selenium的調(diào)用

from selenium import webdriver

## 如果是chrome瀏覽器的驅(qū)動
driver=webdriver.Chrome("G:\Anaconda3-5.3.0\chromedriver.exe")

##如果是firefox瀏覽器的驅(qū)動
driver=webdriver.Firefox(executable_path="G:\Anaconda3-5.3.0\geckodriver.exe")

######如果瀏覽器驅(qū)動的目錄加入了環(huán)境變量的話

## 如果是chrome瀏覽器的驅(qū)動
driver=webdriver.Chrome()

##如果是firefox瀏覽器的驅(qū)動
driver=webdriver.Firefox()

Selenium的使用 定位

Selenium提供了8種定位方式

1.id
2.name
3.class name
4.tag name
5.link text
6.partial link text
7.xpath
8.css selector

定位元素的使用

定位一個元素 定位多個元素 含義
find_element_by_id find_elements_by_id 通過元素id定位
find_element_by_name find_elements_by_name 通過元素name定位
find_element_by_class_name find_elements_by_class_name 通過classname進(jìn)行定位
find_element_by_tag_name find_elements_by_tag_name 通過標(biāo)簽定位
find_element_by_link_text find_elements_by_link_tex 通過完整超鏈接定位
find_element_by_partial_link_text find_elements_by_partial_link_text 通過部分鏈接定位
find_elements_by_css_selector find_elements_by_css_selector 通過css選擇器進(jìn)行定位
find_element_by_xpath find_elements_by_xpath 通過xpath表達(dá)式定位

例如:

<html>
 <body>
   <form id="loginForm">
     <input name="username" type="text" classname="xie" id="key"/>
     <input name="password" type="password" 型號 />
     <input name="continue" type="submit" value="Login" />
     <input name="continue" type="button" value="Clear" />
   </form>
   <a  rel="external nofollow" >百度一下</a>
 </body>
</html>

通過id進(jìn)行定位第一個input框: find_element_by_id("key") 

通過name進(jìn)行定位第一個input框:find_element_by_name("username")

通過classname進(jìn)行定位第一個input框:find_element_by_class_name("xie")

通過標(biāo)簽tag進(jìn)行定位input框:find_element_by_tag_name("input")    //這里input太多了,用input標(biāo)簽定位會出錯

通過完整超鏈接定位a標(biāo)簽: find_element_by_link_text("百度一下")

用xpath進(jìn)行定位:

用絕對路徑進(jìn)行定位,input[1]代表form下面的第一個input標(biāo)簽,從1開始, input=input[1]
driver.find_elemant_by_xpath("http://html/body/form/input[1]")

用相對路徑進(jìn)行定位,form標(biāo)簽下的第一個input標(biāo)簽,[1]省略了
driver.find_element_by_xpath("http://form/input")

用相對路徑和屬性進(jìn)行定位,form標(biāo)簽下的input標(biāo)簽的name值等于username的標(biāo)簽
driver.find_element_by_xpath("http://form/input[@name='username']")

其他的屬性值如果太長,也可以采取模糊方法定位
例如頁面中有這么一個標(biāo)簽  
<a  rel="external nofollow" >百度一下</a>
則可以這么使用 
driver.find_element_by_xpath("http://a[contains(@href,'login')]")

以上是普通的情況,存在可以定位的屬性,當(dāng)某個元素的各個屬性及其組合都不足以定位時,我們可以利用其兄弟節(jié)點或者父節(jié)點等各種可以定位的元素進(jìn)行定位,先看看xpath中支持的方法:

     1、child  選取當(dāng)前節(jié)點的所有子元素

     2、parent  選取當(dāng)前節(jié)點的父節(jié)點

     3、descendant選取當(dāng)前節(jié)點的所有后代元素(子、孫等)

     4、ancestor  選取當(dāng)前節(jié)點的所有先輩(父、祖父等)

     5、descendant-or-self選取當(dāng)前節(jié)點的所有后代元素(子、孫等)以及當(dāng)前節(jié)點本身

     6、ancestor-or-self  選取當(dāng)前節(jié)點的所有先輩(父、祖父等)以及當(dāng)前節(jié)點本身

     7、preceding-sibling選取當(dāng)前節(jié)點之前的所有同級節(jié)點

     8、following-sibling選取當(dāng)前節(jié)點之后的所有同級節(jié)點

     9、preceding   選取文檔中當(dāng)前節(jié)點的開始標(biāo)簽之前的所有節(jié)點

    10、following   選取文檔中當(dāng)前節(jié)點的結(jié)束標(biāo)簽之后的所有節(jié)點

    11、self  選取當(dāng)前節(jié)點

    12、attribute  選取當(dāng)前節(jié)點的所有屬性

    13、namespace選取當(dāng)前節(jié)點的所有命名空間節(jié)點

上圖實例,需要點擊訂單號為17051915200001的發(fā)貨按鈕,這時候不能直接定位到發(fā)貨按鈕,而是要先定位到訂單號元素,再定位他的兄弟節(jié)點。參照上圖,我們首先定位到td標(biāo)簽中包含訂單號的td元素,然后選擇其之后的同級節(jié)點,following-sibling,我們要找的元素在后面的第8個td標(biāo)簽下,因此定位可以寫名為下面的格式

driver.find_element_by_xpath("http://td[contains(text(),'17051915200001')]/following-sibling::td[8]/a[@class='link']")

但是如果頁面中有兩個相同的定位元素的話,我們這樣使用就有可能會報錯

比如有下面兩個輸入框,一個輸入用戶名的,一個輸入密碼的,但是 class 都是等于 inputclass 。這時,如果我們使用class_name 來定位元素的話,就會出現(xiàn)意想不到的錯誤

<input type="text" class="inputclass" name="username">
<input type="password"  class="inputclass" name="password"><br/>

#python代碼
driver.find_element_by_class_name("inputclass").send_keys("admin")
driver.find_element_by_class_name("inputclass").send_keys("password")

我們的本意是在username框內(nèi)輸入admin,password框內(nèi)輸入 password 。但是由于兩個框的 class 相同,而我們又是使用class_name進(jìn)行元素的定位,所以我們所有的操作都會對第一個元素進(jìn)行。 

還有如果我們定位的元素頁面沒有的話,也會報錯

比如我們使用這條語句用class_name來進(jìn)行定位元素,但是當(dāng)頁面沒有 class_name="aa" 的元素的話,就會報錯,表示找不到通過 class name 方法找的元素 aa

driver.find_element_by_class_name("aa").send_keys("bb")

NoSuchElementException: no such element: Unable to locate element: {"method":"class name","selector":"aa"}

定位下拉標(biāo)簽元素 

import Select
Select(driver.find_element_by_xpath("http://select[@id='9560af43bfc949c4826d329c352e4eb6_class']")).select_by_index(4)  #定位公共互聯(lián)網(wǎng)環(huán)境

在iframe框架之間切換 

#切換到指定的iframe框架
driver.switch_to.frame("mainFrame") #切換iframe框架
driver.switch_to.default_content()  #切換到主框架

上傳文件

上傳文件使用的是AutoIt,安裝好后,打開AutoIt Window Info,鼠標(biāo)選中Finder Tool,然后鼠標(biāo)左鍵按住拖到文件名框內(nèi),得到如圖數(shù)據(jù)

然后鼠標(biāo)選中Finder Tool,鼠標(biāo)左鍵按住拖到打開按鈕,得到如圖數(shù)據(jù)

打開SciTE Script Editor,輸入如下內(nèi)容

WinWait("CLASS:#32770","",5) #設(shè)置5秒用于等待上傳窗口的顯示
ControlFocus("打開","","Edit1") #把輸入焦點定位到上傳文本框中
ControlSetText("打開","","Edit1","C:\Users\17250\Desktop\1.txt") #輸入文件路徑
Sleep(5000)       #等待上傳時間,單位毫秒
ControlClick("打開","","Button1"); #點擊打開按鈕,開始上傳

保存為1.au3,點擊Tools->Go運(yùn)行。

然后打開Compile Script to .exe ,然后選中1.au3,它會自動將其轉(zhuǎn)換為1.exe。

在python中使用

os.system("C:\\Users\\17250\\Desktop\\1.exe")

Webdriver模塊的使用

控制瀏覽器操作的一些方法 

方法 說明
set_window_size() 設(shè)置瀏覽器的大小
back() 控制瀏覽器后退
forward() 控制瀏覽器前進(jìn)
refresh() 刷新當(dāng)前頁面
clear() 清除文本
send_keys (value) 模擬按鍵輸入
click() 單擊元素
submit() 用于提交表單
get_attribute(name) 獲取元素屬性值
is_displayed() 設(shè)置該元素是否用戶可見
size 返回元素的尺寸
text 獲取元素的文本

鼠標(biāo)事件

在 WebDriver 中, 將這些關(guān)于鼠標(biāo)操作的方法封裝在 ActionChains 類提供。

方法 說明
ActionChains(driver) 構(gòu)造ActionChains對象
context_click() 執(zhí)行鼠標(biāo)懸停操作
move_to_element(above) 右擊
double_click() 雙擊
drag_and_drop() 拖動
move_to_element(above) 執(zhí)行鼠標(biāo)懸停操作
context_click() 用于模擬鼠標(biāo)右鍵操作, 在調(diào)用時需要指定元素定位
perform() 執(zhí)行所有 ActionChains 中存儲的行為,可以理解成是對整個操作的提交動作

鍵盤事件

Selenium中的Key模塊為我們提供了模擬鍵盤按鍵的方法,那就是send_keys()方法。它不僅可以模擬鍵盤輸入,也可以模擬鍵盤的操作。

常用的鍵盤操作如下:

模擬鍵盤按鍵 說明
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)
send_keys(Keys.F1…Fn) 鍵盤 F1…Fn

獲取斷言信息

不管是在做功能測試還是自動化測試,最后一步需要拿實際結(jié)果與預(yù)期進(jìn)行比較。這個比較的稱之為斷言。通過我們獲取title 、URL和text等信息進(jìn)行斷言。

屬性 說明
title 用于獲得當(dāng)前頁面的標(biāo)題
current_url 用戶獲得當(dāng)前頁面的URL
text 獲取搜索條目的文本信息

 參考文章:https://blog.csdn.net/weixin_36279318/article/details/79475388

到此這篇關(guān)于Python中Selenium模塊的使用詳解的文章就介紹到這了,更多相關(guān)Python Selenium模塊使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的字典及嵌套遍歷

    python中的字典及嵌套遍歷

    這篇文章主要介紹了python中的字典及嵌套遍歷,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python用類實現(xiàn)撲克牌發(fā)牌的示例代碼

    Python用類實現(xiàn)撲克牌發(fā)牌的示例代碼

    這篇文章主要介紹了Python用類實現(xiàn)撲克牌發(fā)牌的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python深度學(xué)習(xí)實戰(zhàn)PyQt5基本控件使用解析

    Python深度學(xué)習(xí)實戰(zhàn)PyQt5基本控件使用解析

    PyQt5 提供了豐富的輸入輸出控件。本文介紹通過 QtDesigner 工具欄創(chuàng)建常用的基本控件,包括各種按鈕控件、文本輸入控件和調(diào)節(jié)輸入控件
    2021-10-10
  • Python : turtle色彩控制實例詳解

    Python : turtle色彩控制實例詳解

    今天小編就為大家分享一篇Python : turtle色彩控制實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python技巧分享之groupby基礎(chǔ)用法詳解

    Python技巧分享之groupby基礎(chǔ)用法詳解

    python中g(shù)roupby函數(shù)主要的作用是進(jìn)行數(shù)據(jù)的分組以及分組后地組內(nèi)運(yùn)算!本文將通過一些示例和大家詳細(xì)講講groupby的基礎(chǔ)用法,需要的可以參考一下
    2022-10-10
  • OpenCV-Python模板匹配人眼的實例

    OpenCV-Python模板匹配人眼的實例

    模板匹配是指在當(dāng)前圖像A內(nèi)尋找與圖像B最相似的部分,本文詳細(xì)的介紹了OpenCV-Python模板匹配人眼的實例,感興趣的可以了解一下
    2021-06-06
  • 詳解pyppeteer(python版puppeteer)基本使用

    詳解pyppeteer(python版puppeteer)基本使用

    這篇文章主要介紹了詳解pyppeteer(python版puppeteer)基本使用 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • OpenCV角點檢測的實現(xiàn)示例

    OpenCV角點檢測的實現(xiàn)示例

    角點通常被定義為兩條邊的交點,本文主要介紹了OpenCV角點檢測的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Numpy數(shù)組的組合與分割實現(xiàn)的方法

    Numpy數(shù)組的組合與分割實現(xiàn)的方法

    本文主要介紹了Numpy數(shù)組的組合與分割實現(xiàn)的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python持久性管理pickle模塊詳細(xì)介紹

    python持久性管理pickle模塊詳細(xì)介紹

    這篇文章主要介紹了python持久性管理pickle模塊詳細(xì)介紹,本文講解了什么是持久性、一些經(jīng)過 pickle 的 Python等內(nèi)容,并講給出了18個使用示例,需要的朋友可以參考下
    2015-02-02

最新評論