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

python中selenium庫的基本使用詳解

 更新時間:2020年07月31日 11:27:49   作者:小董不太懂  
這篇文章主要介紹了python中selenium庫的基本使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

什么是selenium

selenium 是一個用于Web應(yīng)用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。selenium 是一套完整的web應(yīng)用程序測試系統(tǒng),包含了測試的錄制(selenium IDE),編寫及運行(Selenium Remote Control)和測試的并行處理(Selenium Grid)。
Selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,因此可以用于任何支持JavaScript的瀏覽器上。

selenium可以模擬真實瀏覽器,自動化測試工具,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題。

這里要說一下比較重要的PhantomJS,PhantomJS是一個而基于WebKit的服務(wù)端JavaScript API,支持Web而不需要瀏覽器支持,其快速、原生支持各種Web標(biāo)準(zhǔn):Dom處理,CSS選擇器,JSON等等。PhantomJS可以用用于頁面自動化、網(wǎng)絡(luò)監(jiān)測、網(wǎng)頁截屏,以及無界面測試

selenium的基本用法

聲明瀏覽器對象

上面我們知道了selenium支持很多的瀏覽器:

但是如果想要聲明并調(diào)用瀏覽器則需要:

from selenium import webdriver

browser = webdriver.Chrome()
browser = webdriver.Firefox()

這里只寫了兩個例子,當(dāng)然了其他的支持的瀏覽器都可以通過這種方式調(diào)用

訪問頁面

from selenium import webdriver#導(dǎo)入庫
browser = webdriver.Chrome()#聲明瀏覽器
url = 'https:www.baidu.com'
browser.get(url)#打開瀏覽器預(yù)設(shè)網(wǎng)址
print(browser.page_source)#打印網(wǎng)頁源代碼
browser.close()#關(guān)閉瀏覽器

上述代碼運行后,會自動打開Chrome瀏覽器,并登陸百度打印百度首頁的源代碼,然后關(guān)閉瀏覽器

查找元素

單個元素查找

from selenium import webdriver#導(dǎo)入庫
browser = webdriver.Chrome()#聲明瀏覽器
url = 'https:www.taobao.com'
browser.get(url)#打開瀏覽器預(yù)設(shè)網(wǎng)址
input_first = browser.find_element_by_id('q')
input_two = browser.find_element_by_css_selector('#q')
print(input_first)
print(input_two)

這里我們通過2種不同的方式去獲取響應(yīng)的元素,第一種是通過id的方式,第二個中是CSS選擇器,結(jié)果都是相同的。
輸出如下:

<selenium.webdriver.remote.webelement.WebElement (session="9aaa01da6545ba2013cc432bcb9abfda", element="0.5325244323105505-1")>
<selenium.webdriver.remote.webelement.WebElement (session="9aaa01da6545ba2013cc432bcb9abfda", element="0.5325244323105505-1")>

這里列舉一下常用的查找元素方法:

  • find_element_by_name
  • find_element_by_id
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

下面這種方式是比較通用的一種方式:這里需要記住By模塊所以需要導(dǎo)入

from selenium.webdriver.common.by import By

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
url = 'https://www.taobao.com'
browser.get(url)
input_1 = browser.find_element(By.ID, 'q')
print(input_1)

當(dāng)然這種方法和上述的方式是通用的,browser.find_element(By.ID,"q")這里By.ID中的ID可以替換為其他幾個
我個人比較傾向于css

多個元素查找

其實多個元素和單個元素的區(qū)別,舉個例子:find_elements,單個元素是find_element,其他使用上沒什么區(qū)別,通過其中的一個例子演示:

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.taobao.com'
browser.get(url)
input = browser.find_elements_by_css_selector('.service-bd li')
print(input)
browser.close()

輸出為一個列表形式:

[<selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-1")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-2")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-3")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-4")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-5")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-6")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-7")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-8")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-9")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-10")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-11")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-12")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-13")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-14")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-15")>, <selenium.webdriver.remote.webelement.WebElement (session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-16")>]

當(dāng)然上面的方式也是可以通過導(dǎo)入from selenium.webdriver.common.by import By 這種方式實現(xiàn)
lis = browser.find_elements(By.CSS_SELECTOR,'.service-bd li')
同樣的在單個元素中查找的方法在多個元素查找中同樣存在:

  • find_elements_by_name
  • find_elements_by_id
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

元素交互操作

對于獲取的元素調(diào)用交互方法

from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get(url='https://www.baidu.com')
time.sleep(2)
input = browser.find_element_by_css_selector('#kw')
input.send_keys('韓國女團(tuán)')
time.sleep(2)
input.clear()
input.send_keys('后背搖')
button = browser.find_element_by_css_selector('#su')
button.click()
time.sleep(10)
browser.close()

運行的結(jié)果可以看出程序會自動打開Chrome瀏覽器并打開百度頁面輸入韓國女團(tuán),然后刪除,重新輸入后背搖,并點擊搜索
Selenium所有的api文檔:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

交互動作

將動作附加到動作鏈中串行執(zhí)行

from selenium import webdriver
from selenium.webdriver import ActionChains

browser = webdriver.Chrome()

url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()

更多操作參考:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

執(zhí)行JavaScript

這是一個非常有用的方法,這里就可以直接調(diào)用js方法來實現(xiàn)一些操作,
下面的例子是通過登錄知乎然后通過js翻到頁面底部,并彈框提示

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')

獲取元素屬性

get_attribute('class')
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
logo = browser.find_element_by_css_selector('.zu-top-link-logo')
print(logo)
print(logo.get_attribute('class'))
print(logo.get_attribute('id'))
time.sleep(2)
browser.quit()

輸出如下:

<selenium.webdriver.remote.webelement.WebElement (session="b72dbd6906debbca7d0b49ab6e064d92", element="0.511689875475734-1")>
zu-top-link-logo
zh-top-link-logo

獲取文本值

text

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
logo = browser.find_element_by_css_selector('.zu-top-link-logo')
print(logo)
print(logo.text)

輸出如下:

<selenium.webdriver.remote.webelement.WebElement (session="ce8814d69f8e1291c88ce6f76b6050a2", element="0.9868611170776878-1")>
知乎

獲取ID,位置,標(biāo)簽名

id
location
tag_name
size

from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_css_selector('.zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)

輸出如下:

0.022998219885927318-1
{'x': 759, 'y': 7}
button
{'height': 32, 'width': 66}

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

相關(guān)文章

  • Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn)

    Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn)

    這篇文章主要介紹了Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python實現(xiàn)名片管理系統(tǒng)項目

    python實現(xiàn)名片管理系統(tǒng)項目

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)名片管理系統(tǒng)項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Pandas數(shù)據(jù)清洗和預(yù)處理的實現(xiàn)示例

    Pandas數(shù)據(jù)清洗和預(yù)處理的實現(xiàn)示例

    本文主要介紹了Pandas數(shù)據(jù)清洗和預(yù)處理的實現(xiàn)示例,包括處理缺失值、異常值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換和規(guī)范化,以及處理重復(fù)數(shù)據(jù)等操作,感興趣的可以了解一下
    2024-01-01
  • Python中使用MySQL模糊查詢的詳細(xì)方法

    Python中使用MySQL模糊查詢的詳細(xì)方法

    這篇文章主要介紹了Python中使用MySQL模糊查詢的方法,以下是一個使用pymysql進(jìn)行模糊查詢的詳細(xì)示例,包括安裝庫、連接數(shù)據(jù)庫、執(zhí)行查詢以及處理結(jié)果,需要的朋友可以參考下
    2024-06-06
  • Django框架模板用法詳解

    Django框架模板用法詳解

    本文詳細(xì)講解了Django框架中模板的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Flask的url_for和request.url如何進(jìn)行URL判斷

    Flask的url_for和request.url如何進(jìn)行URL判斷

    這篇文章主要介紹了Flask的url_for和request.url如何進(jìn)行URL判斷問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Python調(diào)用Google?Bard的圖文詳解

    Python調(diào)用Google?Bard的圖文詳解

    Google?Bard?是一種開源數(shù)據(jù)可視化和探索工具,可為?開發(fā)人員?提供支持,本文主要為大家介紹了Python調(diào)用Google?Bard的方法,需要的可以參考下
    2023-08-08
  • python?playwright?庫上傳和下載操作(自動化測試?playwright)

    python?playwright?庫上傳和下載操作(自動化測試?playwright)

    這篇文章主要介紹了python?playwright?庫上傳和下載操作(自動化測試?playwright?),playwright中的上傳和下載比selenium的上傳和下載要簡便些,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本

    Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本

    這篇文章主要給大家介紹了關(guān)于Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本的相關(guān)資料,文中通過代碼示例將實現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 50行Python代碼實現(xiàn)視頻中物體顏色識別和跟蹤(必須以紅色為例)

    50行Python代碼實現(xiàn)視頻中物體顏色識別和跟蹤(必須以紅色為例)

    本文通過50行Python代碼實現(xiàn)視頻中物體顏色識別和跟蹤效果,通過實例截圖和實例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2019-11-11

最新評論

祁阳县| 武宁县| 晋中市| 高尔夫| 北宁市| 河南省| 桐城市| 滕州市| 从化市| 新建县| 永丰县| 龙口市| 庄河市| 娱乐| 安多县| 临夏县| 梧州市| 绍兴县| 左云县| 合作市| 宝兴县| 汪清县| 玉溪市| 焦作市| 崇礼县| 宾阳县| 交口县| 大关县| 宝应县| 峨眉山市| 嘉鱼县| 青河县| 象山县| 巴中市| 鄂温| 麟游县| 宣城市| 祁连县| 阜城县| 九江市| 揭西县|