selenium基本使用


安裝

pip install selenium

使用 (以chrome瀏覽器為例)

1.導入: from selenium import webdriver

2.創建瀏覽器驅動對象

方法一: 將下載好的chrome瀏覽器驅動文件加入到python目錄下

browser = webdriver.Chrome() # 默認路徑為python環境目錄

方法二:指定chrome瀏覽器驅動文件路徑

chromedriver = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver'
browser = webdriver.Chrome(chromedriver)

3.打開瀏覽器網頁訪問url

打開網頁:

browser.get('https://www.taobao.com')

關閉網頁窗口,並退出瀏覽器:

driver.close()  # 關閉瀏覽器窗口
driver.quit()  # 退出瀏覽器

4.獲取元素

a. 獲取單個元素:

find_element_by_name()是根據Name值獲取

ind_element_by_id()是根據ID獲取

find_element_by_xpath()是根據Xpath提取

find_element_by_css_selector('#xxx') # id : #xxx class: .xxx

driver.find_element_by_link_text('賬號登錄') # 通過鏈接的文本取元素

其他方法:

from selenium.webdriver.common.by import By

find_element_by_id(id)
就等價於find_element(By.ID, id)

find_element_by_css_selector('#xxx')
等價於find_elements(By.CSS_SELECTOR, '.service-bd li')

b.獲取多個元素

find_elements_by_css_selector('#xxx li') # 根據id=xxx來獲取下面的所有li的結果

5.前進后退

browser.back()  #后退
time.sleep(1)
browser.forward() #前進

6.切換窗口

driver.execute_script('window.open()')  # 執行js代碼, window.open():打開一個空頁面

browser.current_window_handl) # 當前窗口
browser.window_handles # 所有窗口列表

browser.switch_to.window(browser.window_handles[1]) #切換到指定窗口

7.模擬登陸CSDN

import time

from selenium import webdriver

driver = webdriver.Chrome()  # chrome驅動文件在默認目錄python目錄下

driver.get('https://passport.csdn.net/login')

login = driver.find_element_by_link_text('賬號登錄') # 通過鏈接的文本取元素
login.click()
time.sleep(1)

username = driver.find_element_by_id('username')
username.send_keys('用戶名')  # 輸入賬號

pwd = driver.find_element_by_id('password')
pwd.send_keys('密碼')   # 輸入密碼

login_btn = driver.find_element_by_css_selector('.btn.btn-primary')
login_btn.click()

8.截圖

driver.save_screenshot('csdn.png')

9.獲取網頁源碼

driver.page_source()
# 遇到隨滾輪滑動動態加載的頁面,需要模擬滾輪滑動到底部后,再獲取源碼, 滑動速度不能太快,每次滑動一段距離即可.

10.實現拖拽效果

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
actions = ActionChains(driver)

driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

# 切換iframe iframe是一個獨立新窗口,需切換
driver.switch_to.frame('iframeResult')

draggable = driver.find_element_by_id('draggable')
droppable = driver.find_element_by_id('droppable')

actions.drag_and_drop(draggable, droppable)
actions.perform()

# time.sleep(3)
# driver.quit()

11.滾動效果

滾動條下拉到底

#方法1
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 0到頁面最大高度
#方法2
driver.execute_script("document.documentElement.scrollTop=10000")

12.谷歌無頭模式

options = webdriver.ChromeOptions()  # chrome配置選項
options.add_argument('headless')  # 添加無頭模式參數

driver = webdriver.Chrome(options=options)

13.執行js語句

driver.execute_script()
方法如果有返回值,有以下幾種情況:
  1、如果返回一個頁面元素(document element), 這個方法就會返回一個WebElement
  2、如果返回浮點數字,這個方法就返回一個double類型的數字
  3、返回非浮點數字,方法返回Long類型數字
  4、返回boolean類型,方法返回Boolean類型
  5、如果返回一個數組,方法會返回一個List<Object>
  6、其他情況,返回一個字符串
  7、如果沒有返回值,此方法就會返回null
  例:
  distance = driver.execute_script('var distance=document.body.scrollHeight;return distance;') # 獲取頁面高度
  需要返回值時, js代碼必須 return 該返回值

14.cookies操作

# 獲取所有cookies信息
driver.get_cookies()

# 添加一個cookie信息
driver.add_cookie({'name': 'lisi', 'age': 18}) # 添加的cookie必須是字典形式
# 可以將get_cookies() 獲取的 cookies 遍歷添加進去

# 刪除所有cookies
driver.delete_all_cookies()

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM