Selenium—瀏覽器相關操作


設置瀏覽器大小

瀏覽器全屏

  • driver.maximize_window()

獲取瀏覽器當前窗口大小

  • driver.get_window_size()

改變瀏覽器大小

  • set_window_size(width, height, windowHandle="current")

代碼示例:

 

from selenium import webdriver
import time

url = "http://baidu.com"
driver = webdriver.Chrome()
driver.implicitly_wait(5)

driver.get(url)

# ----------------- 設置瀏覽器窗口大小 -----------------

# 將窗口最大化
driver.maximize_window()

time.sleep(2)

# 將窗口大小實例化
window = driver.get_window_size()
# 重新定義窗口的寬、高
width = 0.25 * window['width']
height = 0.5 * window['height']

# 設置窗口為上面定義的
driver.set_window_size(width=width, height=height, windowHandle="current")

time.sleep(2)

# 手寫窗口大小
driver.set_window_size(600, 800, windowHandle="current")

driver.quit()

 

刷新頁面、后退、前進

刷新當前頁面

  • driver.refresh()

頁面后退

  • driver.back()

頁面前進

  • driver.forward()

代碼示例

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)

driver.get('https://www.baidu.com/')
driver.find_element_by_id("kw").send_keys(u'selenium\n')

time.sleep(2)

# 頁面回退
driver.back()

time.sleep(2)

# 頁面前進
driver.forward()

time.sleep(2)

# 頁面刷新
driver.refresh()

driver.quit()

 

上傳文件

  • 需要安裝一個 pywin32 庫文件 :pip install pywin32

  • 導入庫文件:import win32com.client

  • shell = win32com.client.Dispatch("WScript.Shell")
from selenium import webdriver

import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)

# driver.get('https://tinypng.com')
driver.get('https://www.tiomg.org')
print(driver.title)

# driver.find_element_by_css_selector(".target .icon").click()
driver.find_element_by_id("fileupload").click()

time.sleep(3)

# 直接發送鍵盤消息給 當前應用程序,
# 前提是瀏覽器必須是當前應用
# pip install pyiwin32
import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")

# 有的系統要加 '\r'
# 有的系統要加 '\r\n'
# Sendkeys()中添加文件的路徑名
shell.Sendkeys(r"f:\pic\psb.jpg" + "\r\n") driver.quit()

 

凍結頁面

   凍結界面,就是將web界面凍結,以便我們定位元素

  以華為商城為例:

    如果我們要查看:手機--榮耀 的 元素,我們會發現當我們把鼠標挪開后,頁面還原了,我們沒法定為了

    這時,我們就需要引入凍結界面的方法:setTimeout(function(){debugger;},5000)

 

   使用方法:

    • F12打開開發者工具--點擊 Console

    • 輸入 setTimeout(function(){debugger;},5000)

    • 其中 5000 可修改,其單位為 ms ;意思為,5s后凍結窗口

    • 我們可以在5s內查看元素,使元素可見,並等待窗口凍結

    • F8 恢復凍結

鼠標懸停

  我們既然已經獲取了隱藏的元素,但是我們怎么實現鼠標停留在某一元素呢?

  這里我們需要使借助 ActionChains 類,來實現我們的操作

  • move_to_element() 鼠標懸停

 

截屏

  • get_screenshot_as_file()   窗口截圖

 

關閉瀏覽器

  • driver.close() 關閉當前窗口
  • driver.quit() 關閉所有窗口--關閉瀏覽器

 

代碼示例:

# 實現點擊 手機--mate系列,查看所有的mate系列的手機名及相應的價格

from selenium import webdriver import time driver = webdriver.Chrome() # 窗口最大化 driver.maximize_window() # 隱式等待 10s driver.implicitly_wait(10) # 打開 華為商城 driver.get('https://www.vmall.com/') # 導入 ActionChains 類 from selenium.webdriver.common.action_chains import ActionChains # 定位手機的元素 phone = driver.find_element_by_css_selector("#zxnav_0 .category-item-bg") # 鼠標懸停在手機元素上 ActionChains(driver).move_to_element(phone).perform() time.sleep(2) # 定位 HUAWEI Mate系列 元素 mate = driver.find_element_by_xpath('//input[@value="HUAWEI Mate系列"]/../a') # 點擊 Mate 系列 mate.click() # 切換至新窗口 mainWindow = driver.current_window_handle handles = driver.window_handles for handle in handles: driver.switch_to.window(handle) if "Mate" in driver.title: break # 當前窗口截圖保存 # 參數即為保存的路徑和格式,且Picture目錄必須存在 driver.get_screenshot_as_file('E:\\Picture\\Mate.png') # 獲取每一部手機的元素 p_mate = driver.find_elements_by_css_selector('.channel-list ul>li') # 通過for循環,獲取每一部手機的name 和 price for one in p_mate: p_name = one.find_element_by_css_selector('.p-name>a span').text p_price = one.find_element_by_css_selector('.p-price>b').text time.sleep(1) print(p_name, ':', p_price) time.sleep(1) # 關閉當前窗口 driver.close() # 即使窗口關閉,仍需要切回主窗口 driver.switch_to.window(mainWindow) print(driver.title) # 關閉瀏覽器 driver.quit()

 輸出結果如下:

HUAWEI Mate 10 : ¥3399
HUAWEI Mate 20 X : ¥4499
HUAWEI Mate 20 Pro : ¥5499
HUAWEI Mate 20 : ¥3499
HUAWEI Mate 20 RS 保時捷設計 : ¥12999
HUAWEI Mate 10 Pro : ¥3999

華為商城(VMALL.COM)_華為手機、榮耀手機、官網正品保障

保存的圖片如圖:

 


免責聲明!

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



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