目錄
selenium用法詳解
webdriver可以認為是瀏覽器的驅動器,要驅動瀏覽器必須用到webdriver,支援多種瀏覽器,這裡以Chrome為例
首頁 web前端 js教程 關於selenium用法的詳解

關於selenium用法的詳解

Jun 11, 2018 pm 05:53 PM
selenium

selenium用法詳解


*selenium主要是用來做自動化測試,支援多種瀏覽器,而爬蟲則主要用來解決JavaScript渲染問題。
模擬瀏覽器進行網頁加載,當requests,urllib無法正常獲取網頁內容的時候*

#一、聲明瀏覽器物件
注意點一,Python檔名或者套件名稱不要命名為selenium,會導致無法導入

from selenium import webdriver
登入後複製

webdriver可以認為是瀏覽器的驅動器,要驅動瀏覽器必須用到webdriver,支援多種瀏覽器,這裡以Chrome為例

browser = webdriver.Chrome()
登入後複製

二、造訪頁面並取得網頁html

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source) # browser.page_source是获取网页的全部htmlbrowser.close()
登入後複製

#三、尋找元素
單一元素

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element_by_id('q')
input_second = browser.find_element_by_css_selector('#q')
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first,input_second,input_third)
browser.close()
登入後複製

常用的尋找方法

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
登入後複製

也可以使用通用的方法

from selenium import webdriverfrom selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input_first = browser.find_element(BY.ID,'q')#第一个参数传入名称,第二个传入具体的参数print(input_first)
browser.close()
登入後複製

多個元素,elements多個s

input_first = browser.find_elements_by_id('q')
登入後複製

四、元素互動操作-搜尋框傳入關鍵字進行自動搜尋

from selenium import webdriver
import timebrowser = webdriver.Chrome()
browser.get('https://www.taobao.com')
input = browser.find_element_by_id('q')#找到搜索框input.send_keys('iPhone')#传送入关键词time.sleep(5)
input.clear()#清空搜索框input.send_keys('男士内裤')
button = browser.find_element_by_class_name('btn-search')#找到搜索按钮button.click()
登入後複製

更多操作: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement#可以有屬性、截圖等等

五、互動動作,驅動瀏覽器進行動作,模擬拖曳動作,將動作附加到動作鏈中串列執行

from selenium import webdriverfrom 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')#切换到iframeResult框架source = browser.find_element_by_css_selector('#draggable')#找到被拖拽对象target = browser.find_element_by_css_selector('#droppable')#找到目标actions = ActionChains(browser)#声明actions对象actions.drag_and_drop(source, target)
actions.perform()#执行动作
登入後複製

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

六、執行JavaScript
#有些動作可能沒有提供api,例如進度條下拉,這時,我們可以透過程式碼執行JavaScript

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")')
登入後複製

七、取得元素資訊
取得屬性

from selenium import webdriverfrom selenium.webdriver import ActionChains
browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'browser.get(url)
logo = browser.find_element_by_id('zh-top-link-logo')#获取网站logoprint(logo)
print(logo.get_attribute('class'))
browser.close()
登入後複製

取得文字值

from selenium import webdriver
browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.text)#input.text文本值browser.close()
登入後複製

取得Id,位置,標籤名,大小

from selenium import webdriver
browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)#获取idprint(input.location)#获取位置print(input.tag_name)#获取标签名print(input.size)#获取大小browser.close()
登入後複製

八、Frame操作
frame相當於獨立的網頁,如果在父類網frame查找子類的,則必須切換到子類的frame,子類如果查找父類也需要先切換

from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementException
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')
print(source)try:
    logo = browser.find_element_by_class_name('logo')except NoSuchElementException:
    print('NO LOGO')
browser.switch_to.parent_frame()
logo = browser.find_element_by_class_name('logo')
print(logo)
print(logo.text)
登入後複製

九、等待

#隱式等待
當使用了隱式等待執行測試的時候,如果WebDriver沒有在DOM中找到元素,將繼續等待,超出設定時間後則拋出找不到元素的異常,
換句話說,當查找元素或元素並沒有立即出現的時候,隱式等待將等待一段時間再查找DOM,預設的時間是0

from selenium import webdriver
browser = webdriver.Chrome()
browser.implicitly_wait(10)#等待十秒加载不出来就会抛出异常,10秒内加载出来正常返回browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input)
登入後複製

顯式等待
指定一個等待條件,和一個最長等待時間,程式會判斷在等待時間內條件是否滿足,如果滿足則返回,如果不滿足會繼續等待,超過時間就會拋出異常

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome()
browser.get('https://www.taobao.com/')wait = WebDriverWait(browser, 10)
input = wait.until(EC.presence_of_element_located((By.ID, 'q')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))
print(input, button)
登入後複製
title_is 标题是某内容
title_contains 标题包含某内容
presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')
visibility_of_element_located 元素可见,传入定位元组
visibility_of 可见,传入元素对象
presence_of_all_elements_located 所有元素加载出
text_to_be_present_in_element 某个元素文本包含某文字
text_to_be_present_in_element_value 某个元素值包含某文字
frame_to_be_available_and_switch_to_it frame加载并切换
invisibility_of_element_located 元素不可见
element_to_be_clickable 元素可点击
staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新
element_to_be_selected 元素可选择,传元素对象
element_located_to_be_selected 元素可选择,传入定位元组
element_selection_state_to_be 传入元素对象以及状态,相等返回True,否则返回False
element_located_selection_state_to_be 传入定位元组以及状态,相等返回True,否则返回False
alert_is_present 是否出现Alert
登入後複製

詳細內容:http://selenium-python.readthedocs.io/api.html#module -selenium.webdriver.support.expected_conditions

十一、前進後退-實作瀏覽器的前進後退以瀏覽不同的網頁

import timefrom selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.get('https://www.python.org/')
browser.back()time.sleep(1)
browser.forward()
browser.close()
登入後複製

十二、 Cookies

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
print(browser.get_cookies())
browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'})
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())
登入後複製

選項卡管理增加瀏覽器視窗

import timefrom selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.execute_script('window.open()')
print(browser.window_handles)
browser.switch_to_window(browser.window_handles[1])
browser.get('https://www.taobao.com')time.sleep(1)
browser.switch_to_window(browser.window_handles[0])
browser.get('http://www.fishc.com')
登入後複製

#十三、異常處理

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.find_element_by_id('hello')from selenium import webdriverfrom selenium.common.exceptions import TimeoutException, NoSuchElementException
browser = webdriver.Chrome()try:
    browser.get('https://www.baidu.com')except TimeoutException:
    print('Time Out')try:
    browser.find_element_by_id('hello')except NoSuchElementException:
    print('No Element')finally:
    browser.close()
登入後複製

本文解說了selenium用法,更多相關內容請關注php中文網。

相關推薦:

如何透過CSS3進行2D轉換

詳解JavaScript的變數及作用域

關於$.ajax()方法參數詳解

以上是關於selenium用法的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Laravel開發:如何使用Laravel Dusk和Selenium進行瀏覽器測試? Laravel開發:如何使用Laravel Dusk和Selenium進行瀏覽器測試? Jun 14, 2023 pm 01:53 PM

Laravel開發:如何使用LaravelDusk和Selenium進行瀏覽器測試?隨著Web應用程式變得越來越複雜,我們需要確保其各個部分都能正常運作。瀏覽器測試是一種常見的測試方法,用於確保應用在各種不同瀏覽器下的正確性和穩定性。在Laravel開發中,可以使用LaravelDusk和Selenium進行瀏覽器測試。本文將介紹如何使用這兩個工具進行測

學會使用輕鬆的PyCharm安裝Selenium:PyCharm安裝及設定指南 學會使用輕鬆的PyCharm安裝Selenium:PyCharm安裝及設定指南 Jan 04, 2024 pm 09:48 PM

PyCharm安裝教學:輕鬆學會如何安裝Selenium,需要具體程式碼範例作為Python開發者而言,我們經常需要使用到各種第三方程式庫和工具來完成專案開發。其中,Selenium是一個非常常用的庫,用於自動化測試和Web應用程式的UI測試。而PyCharm作為Python開發的整合開發環境(IDE),為我們提供了方便快速的方式進行Python程式碼開發,那麼如何

在Scrapy爬蟲中使用Selenium和PhantomJS 在Scrapy爬蟲中使用Selenium和PhantomJS Jun 22, 2023 pm 06:03 PM

在Scrapy爬蟲中使用Selenium和PhantomJSScrapy是Python下的一個優秀的網路爬蟲框架,已經被廣泛應用於各個領域中的資料收集和處理。在爬蟲的實作中,有時候需要模擬瀏覽器操作去取得某些網站呈現的內容,這時候就需要用到Selenium和PhantomJS。 Selenium是模擬人類對瀏覽器的操作,讓我們可以自動化地進行網頁應用程式測試

如何使用Selenium進行Web自動化測試 如何使用Selenium進行Web自動化測試 Aug 02, 2023 pm 07:43 PM

如何使用Selenium進行Web自動化測試概述:Web自動化測試是現代軟體開發過程中至關重要的一環。 Selenium是一個強大的自動化測試工具,可以模擬使用者在網頁瀏覽器中的操作,實現自動化的測試流程。本文將介紹如何使用Selenium進行Web自動化測試,並附帶程式碼範例,幫助讀者快速上手。環境準備在開始之前,需要安裝Selenium庫和Web瀏覽器驅動程

利用Java、Selenium和OpenCV結合的方法,解決自動化測試中滑桿驗證問題。 利用Java、Selenium和OpenCV結合的方法,解決自動化測試中滑桿驗證問題。 May 08, 2023 pm 08:16 PM

1.滑桿驗證思路被測對象的滑桿物件長這個樣子。相對而言是比較簡單的一種形式,需要將左側的拼圖透過下方的滑桿進行拖動,嵌入右側空槽中,即完成驗證。要自動化完成這個驗證流程,關鍵點就在於確定滑桿滑動的距離。根據上面的分析,驗證的關鍵點在於確定滑桿滑動的距離。但是看似簡單的一個需求,完成起來卻不簡單。如果使用自然邏輯來分析這個過程,可以拆解如下:1.定位到左側拼圖所在的位置,由於拼圖的形狀和大小固定,那麼其實只需要定位其左邊邊界離背景圖片的左側距離。 (實際在本例中,拼圖的起始位置也是固定的,節省了

高效率爬取網頁資料:PHP和Selenium的結合使用 高效率爬取網頁資料:PHP和Selenium的結合使用 Jun 15, 2023 pm 08:36 PM

隨著網路科技的快速發展,Web應用程式越來越多地應用於我們的日常工作和生活中。而在Web應用程式開發過程中,爬取網頁資料是一項非常重要的任務。雖然市面上有許多的Web抓取工具,但這些工具的效率都不是很高。為了提高網頁資料爬取的效率,我們可以利用PHP和Selenium的結合使用。首先,我們要先了解PHP和Selenium分別是什麼。 PHP是一種強大的

pycharm如何安裝selenium pycharm如何安裝selenium Dec 08, 2023 pm 02:32 PM

pycharm安裝selenium步驟:1、開啟PyCharm;2、在選單列中選擇依序選擇"File"、"Settings"、"Project: [專案名稱]";3、選擇Project Interpreter;4、點選選項卡右側的"+";5、在彈出的視窗搜尋selenium;6、找到selenium點擊旁邊的"Install"按鈕;7、等待安裝完成;8、關閉設定對話框即可。

Python中如何使用Selenium爬取網頁數據 Python中如何使用Selenium爬取網頁數據 May 09, 2023 am 11:05 AM

一.什麼是Selenium網路爬蟲是Python程式設計中一個非常有用的技巧,它可以讓您自動取得網頁上的資料。 Selenium是一個自動化測試工具,它可以模擬使用者在瀏覽器中的操作,例如點擊按鈕、填寫表單等。與常用的BeautifulSoup、requests等爬蟲庫不同,Selenium可以處理JavaScript動態載入的內容,因此對於那些需要模擬使用者互動才能取得的數據,Selenium是一個非常合適的選擇。二.安裝Selenium要使用Selenium,首先需要安裝它。您可以使用pip指令來安裝

See all articles