【python+selenium的web自動化】- 控制瀏覽器的常用操作


如果想從頭學起selenium,可以去看看這個系列的文章哦!

https://www.cnblogs.com/miki-peng/category/1942527.html

前言

​ 本文主要介紹selenium控制瀏覽器一些常用屬性和方法,包括控制窗口大小、頁面前進后退、頁面刷新、打開或關閉標簽頁、滾動條等等

設置瀏覽器大小

import time
from selenium import webdriver


# 瀏覽器實例化
driver = webdriver.Chrome()

 # 把瀏覽器窗口最大化
driver.maximize_window()  

 # 把瀏覽器窗口最小化
driver.minimize_window()

# 設置瀏覽器窗口大小,長、寬作為參數傳遞進去,單位:像素
driver.set_window_size(500,800)

# 獲取瀏覽器大小
size = driver.get_window_size()
print(size)

time.sleep(5)
driver.quit()

前進/后退/刷新

import time
from selenium import webdriver


# 瀏覽器實例化
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//input[@id='su']").click()
time.sleep(2)

# 后退
driver.back()
time.sleep(2)
# 前進
driver.forward()
time.sleep(2)
# 刷新
driver.refresh()
time.sleep(2)

time.sleep(5)
driver.quit()

獲取瀏覽器相關信息

from selenium import webdriver


driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# 獲取瀏覽器名稱
print(driver.name)

# 獲取網頁的 URL 地址
print(driver.current_url)

# 獲取網頁的標題
print(driver.title)

# 獲取網頁的源代碼
print(driver.page_source)

標簽頁切換

​ 在頁面中點擊某個鏈接之后,可能就會打開一個新的標簽頁,Chromedriver驅動是不會主動幫我們去切換。多標簽頁出現后,如果要做下一步操作,需要先切換瀏覽器標簽頁。所有切換動作都是用switch_to語句,標簽頁切換關鍵代碼:switch_to.window(標簽頁句柄)

import time
from selenium import webdriver


# 啟動Chromedriver,並與Chromedriver開啟會話
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
driver.find_element_by_id('kw').send_keys("selenium")
driver.find_element_by_id('su').click()

# 獲取當前標簽頁句柄
wins = driver.current_window_handle
print('當前標簽頁:', wins)

# 點擊其中一個百度結果,出現一個新標簽頁
driver.find_element_by_xpath('//h3[@class="t c-gap-bottom-small"]//a').click()
time.sleep(2)

# 獲取當前所有標簽頁句柄
wins = driver.window_handles    # 返回的是一個列表,按照標簽頁打開的順序
print('所有標簽頁1:', wins)

# 切換到第一個標簽頁
driver.switch_to.window(wins[0])
time.sleep(2)

# 打開新的標簽頁
js = 'window.open("https://www.cnblogs.com/miki-peng/")'
driver.execute_script(js)
time.sleep(2)

# 再次獲取當前所有標簽頁句柄
wins = driver.window_handles
print('所有標簽頁2:', wins)

# 關閉當前標簽頁
driver.close()

time.sleep(3)
driver.quit()  # 關閉瀏覽器,kill掉chromedriver進程

小思考🔻:

​ 由於selenium中沒有提供打開標簽頁的方法,但它是支持執行js語句的噢,因此可以通過js來操作。在實際應用中我們打開新的標簽頁是通過鼠標點擊瀏覽器的"+"號,除了這種方法,還可以怎么打開新標簽頁呢,思考一下,答案將在后面的文章中揭曉→傳送門

控制滾動條

​ 一般元素定位,元素如果不在瀏覽器的可視位置(即可見只是不在可視位置),會自動把元素滾動到可視位置,但也有不會自己滾動的(比較少),那我們就可以用selenium的ele.location_once_scrolled_into_view()就可以滾動到某個元素處,也就是滾動直到這個元素出現在屏幕里。除了這種方式以外,也可以用js來滾動窗口。

​ selenium提供了execute_script方法來執行js語句,幾種滾動方式如下:

​ 🚩1、移動元素element對象,與當前窗口的底部對齊

ele = driver.find_element_by_xpath('//h3[@class="t c-gap-bottom-small"]//a')
driver.execute_script("arguments[0].scrollIntoView(false);",ele)

​ 🚩2、移動元素element對象,與當前窗口的頂部對齊

driver.execute_script("arguments[0].scrollIntoView();",ele)

​ 🚩3、把頁面移動到底部

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

​ 🚩4、把頁面移動到頂部

driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")


免責聲明!

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



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