如果想從頭學起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)")