最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Selenium(Python web測試工具)基本用法詳解

 更新時間:2018年08月10日 12:03:55   作者:噴跑的豆子  
這篇文章主要介紹了Selenium(Python web測試工具)基本用法,結合實例形式分析了Selenium的基本安裝、簡單使用方法及相關操作技巧,需要的朋友可以參考下

本文實例講述了Selenium基本用法。分享給大家供大家參考,具體如下:

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

安裝

pip install selenium

安裝驅動程序

下面介紹幾種主流瀏覽器的驅動程序下載地址:

瀏覽器 下載地址
Chrome https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox https://github.com/mozilla/geckodriver/releases
Safari https://webkit.org/blog/6900/webdriver-support-in-safari-10/

下面以windows環(huán)境,Chrome瀏覽器為例,我下載的是2.36版本的驅動chromedriver_win32.zip,解壓得到一個chromedriver.exe文件,將其放置在瀏覽器的安裝目錄之下,如圖所示:

selenium的簡單用法

如果你已經(jīng)按照上面安裝了selenium,并且安裝了驅動程序,下面來簡單的玩一玩selenium:

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
# 創(chuàng)建Chrome WebDriver實例,此路徑為驅動程序的路徑
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
# 加載URL網(wǎng)頁
driver.get("http://www.baidu.com/")
# 判斷標題中是否包含該字符串
assert "百度一下" in driver.title
# 查找id=kw的節(jié)點
element = driver.find_element_by_id("kw")
# 清空原有的輸入,輸入python進行搜索
element.clear()
element.send_keys("python")
element.send_keys(Keys.RETURN)
# 判斷是否有結果返回
assert "No results found." not in driver.page_source
# 關閉當前標簽,也可以使用quit()關閉瀏覽器
driver.close()

上面的栗子,簡單介紹了一下selenium的用法,接下來將結合selenium與unittest來編寫測試:

import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
# 繼承至TestCase,表示這是一個測試用例類
class BaiduCase(unittest.TestCase):
  # 初始化的一部分
  def setUp(self):
    self.driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
  # 測試用例方法,名稱可以自定義,方法名稱始終以test開頭
  def test_serch(self):
    self.driver.get("https://www.baidu.com/")
    assert "百度一下" in self.driver.title
    element = self.driver.find_element_by_id("kw")
    element.clear()
    element.send_keys("python")
    element.send_keys(Keys.RETURN)
    assert "No results found." not in self.driver.page_source
  # 在執(zhí)行完各種測試用例方法之后會執(zhí)行,為一個清理操作
  def tearDown(self):
    self.driver.close()
if __name__ == "__main__":
  unittest.main()

執(zhí)行上面的代碼,將會返回如下信息:

.
----------------------------------------------------------------------
Ran 1 test in 2.914s
OK

值得注意的是,如果沒有配置驅動,或者路徑寫錯了,將會出現(xiàn)WebDriverException錯誤

與網(wǎng)頁互動

與一個網(wǎng)頁進行的真正的交互,具體的說,與網(wǎng)頁的HTML元素進行交互。如果需要與之交互,那么久必須要查找到HTML的元素。WebDriver提供了多種查找HTML元素的方法。例如,給定一個元素為:

<input type="text" name="passwd" id="passwd-id"/>

我們可以使用下面任意方法查找到它:

element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("http://input[@id='passwd-id']")

值的注意的是,使用xpath進行匹配時,如果有多個元素與查詢匹配,只會返回第一個元素。如果什么都找不到,將會返回NoSuchElementException錯誤。當你查找到一個元素時,你可以用它做什么?首先你可能會想到在文本標簽中輸入一些文本:

element.send_keys("python")

也可以使用Keys來模擬一些箭頭鍵:

from selenium.webdriver.common.keys import Keys
element.send_keys(Keys.ARROW_DOWN)

你也可以使用clear()方法來清除文本標簽里的內容:

element.clear()

切換下拉菜單的狀態(tài),我們可以依次循環(huán)選擇每個選項并依次選擇每個選項:

element = driver.find_element_by_xpath("http://select[@name='name']")
all_options = element.find_elements_by_tag_name("option")
for option in all_options:
  option.click()

正如你所看到的,這并不是處理select元素的最有效的方式。WebDriver類包還包括一個名為Select的類,它提供了與這些類交互的有用的方法:

from selenium.webdriver.support.ui import Select
element = driver.find_element_by_xpath("http://select[@name='name']")
select = Select(element)
select.select_by_index(index)
select.select_by_visible_text("text")
select.select_by_value("value")

WebDriver還提供取消選擇所有選項的功能:

element = driver.find_element_by_id('id')
select = Select(element)
select.deselect_all()

Select還具有獲取所有已經(jīng)選中的標簽的方法:

element = driver.find_element_by_id('id')
select = Select(element)
all_options = select.all_selected_options

獲取所有可用的選項:

options = select.options

完成后表格填寫后,您可以需要提交,一種方法是找到submit按鈕并點擊它:

driver.find_element_by_id('submit').click()

WebDriver在每個元素上都有一個submit的便利方法,如果你在一個表單的元素上調用它,Webdriver會遍歷DOM直到包含表單,然后調用它:

element.submit()

WebDriver還提供了前進與后退的操作:

driver.forward()
driver.back()

WebDriver還可以進行設置Cookies和獲取Cookies:

driver.get('https://www.baidu.com/')
driver.add_cookie({"name":"foo","value":"laozhang"})
print(driver.get_cookies()

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python Socket編程技巧總結》、《Python URL操作技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Django-rest-framework中過濾器的定制實例

    Django-rest-framework中過濾器的定制實例

    這篇文章主要介紹了Django-rest-framework中過濾器的定制實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Pandas之DataFrame對象的列和索引之間的轉化

    Pandas之DataFrame對象的列和索引之間的轉化

    這篇文章主要介紹了Pandas之DataFrame對象的列和索引之間的轉化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • Python實現(xiàn)多線程抓取網(wǎng)頁功能實例詳解

    Python實現(xiàn)多線程抓取網(wǎng)頁功能實例詳解

    這篇文章主要介紹了Python實現(xiàn)多線程抓取網(wǎng)頁功能,結合具體實例形式詳細分析了Python多線程編程的相關操作技巧與注意事項,并附帶demo實例給出了多線程抓取網(wǎng)頁的實現(xiàn)方法,需要的朋友可以參考下
    2017-06-06
  • Python asyncore socket客戶端實現(xiàn)方法詳解

    Python asyncore socket客戶端實現(xiàn)方法詳解

    這篇文章主要介紹了Python asyncore socket客戶端實現(xiàn)方法,asyncore庫是python的一個標準庫,提供了以異步的方式寫入套接字服務的客戶端和服務器的基礎結構
    2022-12-12
  • Python代碼顯得Pythonic(區(qū)別于其他語言的寫法)

    Python代碼顯得Pythonic(區(qū)別于其他語言的寫法)

    這篇文章主要介紹了Python代碼顯得Pythonic(區(qū)別于其他語言的寫法),對于字符串連接,相比于簡單的+,更pythonic的做法是盡量使用%操作符或者format函數(shù)格式化字符串,感興趣的小伙伴和小編一起進入文章了解更詳細相關知識內容吧
    2022-02-02
  • pytorch 常用函數(shù) max ,eq說明

    pytorch 常用函數(shù) max ,eq說明

    這篇文章主要介紹了pytorch 常用函數(shù) max eq說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用描述器實現(xiàn)ORM模型的方法詳解

    Python使用描述器實現(xiàn)ORM模型的方法詳解

    這篇文章主要為大家詳細介紹了Python描述器實現(xiàn)ORM模型,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python實現(xiàn)矩陣相乘的三種方法小結

    Python實現(xiàn)矩陣相乘的三種方法小結

    今天小編就為大家分享一篇Python實現(xiàn)矩陣相乘的三種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 一文帶你了解Python中的數(shù)據(jù)序列化與反序列化

    一文帶你了解Python中的數(shù)據(jù)序列化與反序列化

    Python提供了豐富的工具和庫來處理數(shù)據(jù)序列化與反序列化,本文帶領大家一起學習,包括基本概念、常見的序列化格式、示例和最佳實踐,快跟隨小編一起學習起來吧
    2023-10-10
  • 使用VLC實現(xiàn)自動播放視頻的操作方法

    使用VLC實現(xiàn)自動播放視頻的操作方法

    VLC是一款開源的多媒體播放器,它支持大量的視頻和音頻格式,并且具有強大的腳本和編程接口,這篇文章主要介紹了使用VLC實現(xiàn)自動播放視頻,需要的朋友可以參考下
    2024-03-03

最新評論

政和县| 车致| 资溪县| 都兰县| 丰镇市| 仙居县| 新乡市| 阿尔山市| 随州市| 阿克陶县| 沧州市| 鄂尔多斯市| 开阳县| 伊宁市| 云龙县| 太白县| 昭通市| 九江县| 嘉鱼县| 遵化市| 阜宁县| 南开区| 都江堰市| 罗田县| 平阴县| 翼城县| 田东县| 武夷山市| 蓝田县| 资溪县| 华蓥市| 萍乡市| 漯河市| 昂仁县| 阿城市| 罗江县| 辛集市| 乐安县| 柳江县| 皮山县| 武邑县|