關於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中文網。
相關推薦:
以上是關於selenium用法的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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