中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么安裝Python中Selenium框架

發布時間:2021-11-20 14:34:09 來源:億速云 閱讀:156 作者:iii 欄目:編程語言

本篇內容主要講解“怎么安裝Python中Selenium框架”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么安裝Python中Selenium框架”吧!

  Selenium 是一個用于測試 Web 應用程序的框架,該框架測試直接在瀏覽器中運行,就像真實用戶操作一樣。它支持多種平臺:Windows、Linux、Mac,支持多種語言:Python、Perl、PHP、C# 等,支持多種瀏覽器:Chrome、IE、Firefox、Safari 等。

  1 安裝

  1)安裝 Selenium

  pip install selenium

  2)安裝 WebDriver

  主要瀏覽器 WebDriver 地址如下:

  Chrome:http://chromedriver.storage.googleapis.com/index.html

  Firefox:https://github.com/mozilla/geckodriver/releases/

  IE:http://selenium-release.storage.googleapis.com/index.html

  本文以 Chrome 為例,本機為 Windows 系統,WebDriver 使用版本 78.0.3904.11,Chrome 瀏覽器版本為 78.0.3880.4 驅動程序下載好后解壓,將 chromedriver.exe 放到 Python 安裝目錄下即可。

  2 操作瀏覽器

  2.1 打開瀏覽器

  1)普通方式

  以打開去 163 郵箱為例,使用 Chrome 瀏覽器

  from selenium import webdriver

  browser = webdriver.Chrome()

  browser.get('https://mail.163.com/')

  使用 Firefox 瀏覽器

  from selenium import webdriver

  browser = webdriver.Firefox()

  browser.get('https://mail.163.com/')

  使用 IE 瀏覽器

  from selenium import webdriver

  browser = webdriver.Ie()

  browser.get('https://mail.163.com/')

  2)加載配置方式

  以 Chrome 為例,在 Chrome 瀏覽器地址欄輸入 chrome://version/ 打開,如圖所示:

  我們可以看到個人資料路徑這一項,取到路徑:C:\Users\admin\AppData\Local\Google\Chrome\User Data,取到 User Data 使用自己設置的配置,取到 Default 使用默認配置。看下示例:

  from selenium import webdriver

  option = webdriver.ChromeOptions()

  # 自己的數據目錄(需要將復制的路徑中的 \ 替換成 / 或進行轉義 \\)

  # option.add_argument('--user-data-dir=C:/Users/admin/AppData/Local/Google/Chrome/User Data')

  option.add_argument('--user-data-dir=C:\\Users\\admin\\AppData\\Local\\Google\\Chrome\\User Data')

  browser = webdriver.Chrome(chrome_options=option)

  browser.get('https://mail.163.com/')

  # 關閉

  browser.quit()

  如果執行時報錯沒有打開指定頁面,可先將瀏覽器關閉再執行。

  3)Headless 方式

  前兩種方式都是有瀏覽器界面的方式,Headless 模式是 Chrome 瀏覽器的無界面形態,可以在不打開瀏覽器的前提下,使用所有 Chrome 支持的特性運行我們的程序。這種方式更加方便測試 Web 應用、獲得網站的截圖、做爬蟲抓取信息等。看下示例:

  from selenium import webdriver

  chrome_options = webdriver.ChromeOptions()

  # 使用 headless 無界面瀏覽器模式

  chrome_options.add_argument('--headless')

  # 禁用 gpu 加速

  chrome_options.add_argument('--disable-gpu')

  # 啟動瀏覽器,獲取網頁源代碼

  browser = webdriver.Chrome(chrome_options=chrome_options)

  url = 'https://mail.163.com/'

  browser.get(url)

  print('browser text = ',browser.page_source)

  browser.quit()

  2.2 設置瀏覽器窗口

  最大化顯示

  browser.maximize_window()

  最小化顯示

  browser.minimize_window()

  自定義大小

  # 寬 500,高 800

  browser.set_window_size(500,800)

  2.3 前進后退

  前進

  browser.forward()

  后退

  browser.back()

  3 元素定位

  當我們想要操作一個元素時,首先需要找到它,Selenium 提供了多種元素定位方式,我們以 Chrome 瀏覽器 Headless 方式為例。看下示例:

  from selenium import webdriver

  chrome_options = webdriver.ChromeOptions()

  chrome_options.add_argument('--headless')

  chrome_options.add_argument('--disable-gpu')

  browser = webdriver.Chrome(chrome_options=chrome_options)

  url = 'https://xxx.xxx.com/'

  browser.get(url)

  data = browser.page_source

  假設訪問地址 https://xxx.xxx.com/,返回 data 為如下內容。

  index

  1)根據 id 定位

  browser.find_element_by_id('fid')

  2)根據 name 定位

  # 返回第一個元素

  browser.find_element_by_name('fname')

  # 返回所有元素

  browser.find_elements_by_name('fname')

  3)根據 class 定位

  # 返回第一個元素

  browser.find_element_by_class_name('fname')

  # 返回所有元素

  browser.find_elements_by_class_name('fname')

  4)根據標簽名定位

  # 返回第一個元素

  browser.find_element_by_tag_name('input')

  # 返回所有元素

  browser.find_elements_by_tag_name('input')

  5)使用 CSS 定位

  # 返回第一個元素

  browser.find_element_by_css_selector('.fname')

  # 返回所有元素

  browser.find_elements_by_css_selector('.fname')

  6)使用鏈接文本定位超鏈接

  # 返回第一個元素

  browser.find_element_by_link_text('index')

  # 返回所有元素

  browser.find_elements_by_link_text('index')

  # 返回第一個元素

  browser.find_element_by_partial_link_text('index')

  # 返回所有元素

  browser.find_elements_by_partial_link_text('index')

  7)使用 xpath 定位

  # 返回第一個元素

  browser.find_elements_by_xpath("//input[@id='fid']")

  # 返回所有元素

  browser.find_elements_by_xpath("//input[@name='fname']")

  4 等待事件

  Web 應用大多都使用 AJAX 技術進行加載,瀏覽器載入一個頁面時,頁面內的元素可能會在不同的時間載入,這會加大定位元素的困難程度,因為元素不在 DOM 里,會拋出 ElementNotVisibleException 異常,使用 Waits,我們就可以解決這個問題。無錫做人流多少錢 http://mobile.ytsg029.com/

  Selenium WebDriver 提供了顯式和隱式兩種 Waits 方式,顯式的 Waits 會讓 WebDriver 在更深一步的執行前等待一個確定的條件觸發,隱式的 Waits 則會讓 WebDriver 試圖定位元素的時候對 DOM 進行指定次數的輪詢。

  4.1 顯示等待

  WebDriverWait 配合該類的 until() 和 until_not() 方法,就能夠根據判斷條件而進行靈活地等待了。它主要流程是:程序每隔 x 秒檢查一下,如果條件成立了,則執行下一步操作,否則繼續等待,直到超過設置的最長時間,然后拋出 TimeoutException 異常。先看一下方法:

  __init__(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)

  driver: 傳入 WebDriver 實例;

  timeout: 超時時間,單位為秒;

  poll_frequency: 調用 until 或 until_not 中方法的間隔時間,默認是 0.5 秒;

  ignored_exceptions: 忽略的異常,如果在調用 until 或 until_not 的過程中拋出這個元組中的異常,則不中斷代碼,繼續等待,如果拋出的是這個元組外的異常,則中斷代碼,拋出異常。默認只有 NoSuchElementException。

  until(method, message='')

  method: 在等待期間,每隔一段時間(init 中的 poll_frequency)調用這個方法,直到返回值不是 False;

  message: 如果超時,拋出 TimeoutException,將 message 傳入異常。

  until_not(method, message='')

  until 方法是當某條件成立則繼續執行,until_not 方法與之相反,它是當某條件不成立則繼續執行,參數與 until 方法相同。

  以去 163 郵箱為例,看一下示例:

  from selenium import webdriver

  from selenium.webdriver.common.by import By

  from selenium.webdriver.support.ui import WebDriverWait

  from selenium.webdriver.support import expected_conditions as EC

  browser = webdriver.Chrome()

  browser.get('https://mail.163.com/')

  try:

  # 超時時間為 5 秒

  data = WebDriverWait(browser,5).until(

  EC.presence_of_element_located((By.ID,'lbNormal'))

  )

  print(data)

  finally:

  browser.quit()

  示例中代碼會等待 5 秒,如果 5 秒內找到元素則立即返回,否則會拋出 TimeoutException 異常,WebDriverWait 默認每 0.5 秒調用一下 ExpectedCondition 直到它返回成功為止。

  4.2 隱式等待

  當我們要找一個或者一些不能立即可用的元素的時候,隱式 Waits 會告訴 WebDriver 輪詢 DOM 指定的次數,默認設置是 0 次,一旦設定,WebDriver 對象實例的整個生命周期的隱式調用也就設定好了。看一下方法:

  implicitly_wait(time_to_wait)

  隱式等待是設置了一個最長等待時間 time_to_wait,如果在規定時間內網頁加載完成,則執行下一步,否則一直等到時間截止,然后執行下一步。看到了這里,我們會感覺有點像 time.sleep(),它們的區別是:time.sleep() 必須等待指定時間后才能繼續執行, time_to_wait 是在指定的時間范圍加載完成即執行,time_to_wait 比 time.sleep() 更靈活一些。

  看下示例:

  from selenium import webdriver

  browser = webdriver.Chrome()

  browser.implicitly_wait(5)

  browser.get('https://mail.163.com/')

  data = browser.find_element_by_id('lbNormal')

  print(data)

  browser.quit()

  5 登錄 163 郵箱

  最后,我們用 Selenium 來做個登錄 163 郵箱的實戰例子。

  5.1 方式一

  我們通過地址 https://email2.163.com/ 登錄,如圖所示:

  從圖中我們發現直接進了 163 郵箱用戶名、密碼登錄頁,我們直接輸入用戶名、密碼,點擊登錄按鈕即可。示例如下:

  from selenium import webdriver

  browser = webdriver.Chrome()

  browser.get('https://email2.163.com/')

  browser.switch_to.frame(browser.find_element_by_xpath('//iframe[starts-with(@id,"x-URS")]'))

  browser.implicitly_wait(2)

  # 自己的用戶名

  browser.find_element_by_xpath('//input[@name="email"]').send_keys('xxx')

  # 自己的密碼

  browser.find_element_by_xpath('//input[@name="password"]').send_keys('xxx')

  browser.find_element_by_xpath('//*[@id="dologin"]').click()

  browser.implicitly_wait(2)

  print(browser.page_source)

  browser.implicitly_wait(2)

  # 關閉

  browser.quit()

到此,相信大家對“怎么安裝Python中Selenium框架”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永修县| 道孚县| 图木舒克市| 东源县| 蓬溪县| 漯河市| 那坡县| 灵璧县| 汉源县| 商城县| 祁阳县| 昆山市| 鄢陵县| 蓬莱市| 花垣县| 濉溪县| 鄂州市| 温宿县| 资兴市| 和静县| 颍上县| 漠河县| 衡阳县| 华亭县| 定襄县| 上栗县| 天全县| 仁寿县| 昆山市| 临沭县| 遵义市| 柞水县| 江阴市| 翁源县| 信宜市| 资阳市| 恩施市| 普陀区| 油尖旺区| 富平县| 曲靖市|