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

Selenium的使用詳解

 更新時(shí)間:2018年10月19日 09:36:58   作者:回憶不說(shuō)話  
今天小編就為大家分享一篇關(guān)于Selenium的使用詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

先來(lái)看一下功能實(shí)現(xiàn),代碼如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
#聲明瀏覽器對(duì)象
browser = webdriver.Chrome()
try:
  browser.get('https:www.baidu.com')
  input = browser.find_element_by_id('kw')
  input.send_keys('Python')
  input.send_keys(Keys.ENTER)
  wait = WebDriverWait(browser,10)
  wait.until(EC.presence_of_element_located((By.ID,'content_left')))
  print(browser.current_url)
  print(browser.get_cookies())
  print(browser.page_source)
finally:
  browser.close()

可以看到打開(kāi)了百度網(wǎng)站,查詢了“Python”并且輸出了當(dāng)前的url,cookies還有網(wǎng)頁(yè)源代碼。

下面再來(lái)介紹詳細(xì)功能。

1、聲明瀏覽器對(duì)象。

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

瀏覽器的對(duì)象初始化,并將其賦值給browser對(duì)象。

2.以淘寶為例,請(qǐng)求網(wǎng)頁(yè)。

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source)
browser.close()

可以看到輸出了淘寶的源碼,隨后關(guān)閉。

3.查找節(jié)點(diǎn)

單個(gè)節(jié)點(diǎn)

提取搜索框這個(gè)節(jié)點(diǎn)

檢查搜索框如下:

查找搜索框:

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
# 通過(guò)id查找
input_first = browser.find_element_by_id('q')
# 通過(guò)css查找
input_second = browser.find_element_by_css_selector('#q')
# 通過(guò)xpath查找
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first,input_second,input_third)
browser.close()
# 查找單個(gè)節(jié)點(diǎn)的方法
find_element_by_id
find_element_by_name
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

通用方法查找:

browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element(By.ID,'q')
print(input_first)
browser.close()
  • find_element()里面需要兩個(gè)參數(shù),查找方式By和值,
  • 例如:find_element(By.ID,'q')  通過(guò)查找ID的當(dāng)時(shí),查找id為q。

多個(gè)節(jié)點(diǎn):

例如左側(cè)的導(dǎo)航條所有條目:

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

獲取多個(gè)節(jié)點(diǎn)的方法:

find_elements_by_id
find_elements_by_name
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

通用方法在這里同樣適用。

4、節(jié)點(diǎn)交互

import time
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input = browser.find_element_by_id('q')
# 輸入文字用send_keys()
input.send_keys('ipone')
time.sleep(1)
#清空文字用clear()
input.clear()
input.send_keys('ipad')
button = browser.find_element_by_class_name('btn-search')
#點(diǎn)擊
button.click()

5、動(dòng)作鏈

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')
#找到被拖拽的標(biāo)簽
source = browser.find_element_by_css_selector('#draggable')
#找到拖拽目的地的標(biāo)簽
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source,target)
actions.perform()

運(yùn)行結(jié)果如下:

6、執(zhí)行JavaScript

例如下拉進(jìn)度條,可以直接模擬運(yùn)行JavaScript,適用execute_script()即可實(shí)現(xiàn)

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

將滾動(dòng)條拉到底部,執(zhí)行結(jié)果如下:

7、獲取節(jié)點(diǎn)信息

獲取屬性

代碼如下:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
# 獲取class屬性
print(logo.get_attribute('class'))

獲取文本值

代碼如下:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.text)

輸出結(jié)果如下:

獲取id、位置、標(biāo)簽名和大小

以上面的標(biāo)簽為例:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
# 輸出位置
print(input.location)
#標(biāo)簽名
print(input.tag_name)
#大小
print(input.size)

輸出結(jié)果:

8、界面切換

代碼如下:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Chrome()
browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#界面切換到子界面
browser.switch_to.frame('iframeResult')
try:
  # 查找logo
  logo = browser.find_element_by_class_name('logo')
except NoSuchElementException:
  print('NO LOGO')
  # 界面切換到父級(jí)界面
browser.switch_to.parent_frame()
# 查找logo
logo = browser.find_element_by_class_name('logo')
print(logo)
print(logo.text)

9、延時(shí)等待

隱式等待

當(dāng)selenium沒(méi)有在DOM中找到節(jié)點(diǎn),繼續(xù)等待,超出設(shè)定時(shí)間,拋出異常

browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input)

顯式等待

指定要查找的節(jié)點(diǎn),然后指定一個(gè)最長(zhǎng)等待時(shí)間,如果在規(guī)定時(shí)間內(nèi)加載出來(lái)節(jié)點(diǎn),返回節(jié)點(diǎn),如果超出規(guī)定時(shí)間,拋出異常。

browser = webdriver.Chrome()
browser.get('https://www.taobao.com/')
wait = WebDriverWait(browser,10)
input = wait.until(EC.presence_of_element_located((By.ID,'q')))
# 節(jié)點(diǎn)可點(diǎn)擊
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
print(input,button)

10、Cookies

browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
# 獲取cookies
print(browser.get_cookies())
# 添加cookie
browser.add_cookie({'name':'name','domin':'www.zhihu.com','value':'germey'})
print(browser.get_cookies())
# 刪除所有的cookies
browser.delete_all_cookies()
print(browser.get_cookies())

輸出結(jié)果:

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • Python和OpenCV進(jìn)行多尺度模板匹配實(shí)現(xiàn)

    Python和OpenCV進(jìn)行多尺度模板匹配實(shí)現(xiàn)

    本文將實(shí)現(xiàn)如何將標(biāo)準(zhǔn)模板匹配擴(kuò)展到多尺度,使其可以處理模板和輸入圖像大小不同的匹配。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 編寫(xiě)Python腳本批量下載DesktopNexus壁紙的教程

    編寫(xiě)Python腳本批量下載DesktopNexus壁紙的教程

    這篇文章主要介紹了編寫(xiě)Python腳本批量下載DesktopNexus壁紙的教程,相較于普通的爬蟲(chóng)抓取,本文的下載壁紙教程還包括了設(shè)置所要下載的分辨率等功能的實(shí)現(xiàn),需要的朋友可以參考下
    2015-05-05
  • Pycharm安裝python庫(kù)的方法

    Pycharm安裝python庫(kù)的方法

    這篇文章主要介紹了Pycharm安裝python庫(kù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python?peewee操作sqlite鎖表的問(wèn)題分析

    python?peewee操作sqlite鎖表的問(wèn)題分析

    Peewee是一種簡(jiǎn)單而小的ORM,在使用python?orm?框架?peewee?操作數(shù)據(jù)庫(kù)時(shí)時(shí)常會(huì)拋出以一個(gè)異常,下面我們就來(lái)分享一下具體的原因以及解決辦法吧
    2023-08-08
  • Python中的xlrd模塊使用原理解析

    Python中的xlrd模塊使用原理解析

    這篇文章主要介紹了Python中的xlrd模塊原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python OpenCV實(shí)現(xiàn)識(shí)別信用卡號(hào)教程詳解

    Python OpenCV實(shí)現(xiàn)識(shí)別信用卡號(hào)教程詳解

    本文將介紹如何通過(guò) OpenCV 和 Python 使用模板匹配來(lái)執(zhí)行光學(xué)字符識(shí)別 (OCR),再應(yīng)用我們的模板匹配 OCR 方法來(lái)識(shí)別信用卡類(lèi)型以及 16 位信用卡數(shù)字。代碼具有一定價(jià)值,感興趣的童鞋可以了解一下
    2021-11-11
  • python如何通過(guò)openpyxl讀寫(xiě)Excel文件

    python如何通過(guò)openpyxl讀寫(xiě)Excel文件

    python操作excel的庫(kù)有很多,有的庫(kù)只能讀取xsl格式,比如xlrd庫(kù),有的庫(kù)只能寫(xiě)xsl格式,比如xlwt庫(kù),有的只能讀寫(xiě)xslx格式,比如openpyxl庫(kù),綜合各庫(kù)及 xslx 格式比較常見(jiàn),所以本文主要講解openpyxl庫(kù)對(duì)xslx格式的excel操作,需要的朋友可以參考下
    2023-10-10
  • 基于Python實(shí)現(xiàn)船舶的MMSI的獲取(推薦)

    基于Python實(shí)現(xiàn)船舶的MMSI的獲取(推薦)

    工作中遇到一個(gè)需求,需要通過(guò)網(wǎng)站查詢船舶名稱(chēng)得到MMSI碼,網(wǎng)站來(lái)自船訊網(wǎng)。這篇文章主要介紹了基于Python實(shí)現(xiàn)船舶的MMSI的獲取,需要的朋友可以參考下
    2019-10-10
  • Python中日期和時(shí)間的用法超強(qiáng)總結(jié)

    Python中日期和時(shí)間的用法超強(qiáng)總結(jié)

    時(shí)間無(wú)疑是生活各個(gè)方面中最關(guān)鍵的因素之一,因此,記錄和跟蹤時(shí)間變得非常重要。在?Python?中,可以通過(guò)其內(nèi)置庫(kù)跟蹤日期和時(shí)間。今天我們來(lái)介紹關(guān)于?Python?中的日期和時(shí)間,一起來(lái)了解如何使用time和datetime模塊查找和修改日期和時(shí)間
    2022-10-10
  • python+excel接口自動(dòng)化獲取token并作為請(qǐng)求參數(shù)進(jìn)行傳參操作

    python+excel接口自動(dòng)化獲取token并作為請(qǐng)求參數(shù)進(jìn)行傳參操作

    這篇文章主要介紹了python+excel接口自動(dòng)化獲取token并作為請(qǐng)求參數(shù)進(jìn)行傳參操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11

最新評(píng)論

河津市| 通河县| 济南市| 郧西县| 瑞昌市| 巴里| 大理市| 准格尔旗| 得荣县| 扎鲁特旗| 灵璧县| 山西省| 呼玛县| 苍梧县| 长春市| 凤凰县| 唐河县| 黑龙江省| 安化县| 会东县| 玉山县| 偃师市| 泰顺县| 荥经县| 南乐县| 承德县| 双流县| 天水市| 赫章县| 麦盖提县| 永修县| 寿光市| 那坡县| 兴安县| 梓潼县| 深圳市| 昌都县| 库伦旗| 康保县| 宜丰县| 桐柏县|