python實現(xiàn)自動化控制瀏覽器的操作指南
一、控制瀏覽器相關操作
1、控制瀏覽器窗口大小
全屏顯示maximize_window()
from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(3) #全屏顯示 driver.maximize_window()
指定瀏覽器大小set_window_size(w, h)
#指定瀏覽器大小 driver.set_window_size(600,400)
2、控制瀏覽器前進forward()和后退back()
#前進 driver.forward() #后退 driver.back()
3、刷新refresh()
#刷新頁面 driver.refresh()
4、窗口截屏
img_dir = "C:\\測試\\img.png" driver.save_screenshot(img_dir)
二、webdriver常用方法
| 序號 | 方法 | 描述 |
|---|---|---|
| 1 | clear() | 清除 |
| 2 | send_keys(“value”) | 輸入內容 |
| 3 | click() | 點擊事件 |
| 4 | submit() | 提交 |
| 5 | size | 元素尺寸 |
| 6 | text | 元素文本 |
| 7 | get_attribute() | 獲取屬性 |
| 8 | is_displayed() | 查看該元素是否用戶可見 |
三、鼠標操作
| 序號 | 方法 | 描述 |
|---|---|---|
| 1 | click() | 鼠標點擊事件 |
| 2 | move_to_element() | 鼠標懸停效果 |
| 3 | context_click() | 鼠標右擊事件 |
| 4 | double_click() | 鼠標雙擊事件 |
| 5 | drag_and_drop() | 鼠標拖動事件 |
1、單擊事件
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.implicitly_wait(3)
driver.get("https://www.baidu.com")
driver.find_element(By.ID,"kw").send_keys("單擊事件")
element = driver.find_element(By.CSS_SELECTOR,'#su')
ActionChains(driver).click(element).perform()
2、鼠標懸停
#鼠標懸停 ActionChains(driver).move_to_element(element).perform()
3、鼠標右擊事件
#鼠標右擊擊事件 ActionChains(driver).context_click(element).perform()
4、鼠標雙擊事件
#鼠標雙擊事件 ActionChains(driver).double_click(element).perform()
5、鼠標拖動事件
#鼠標拖動事件 tag = driver.find_element(By.CSS_SELECTOR,"#div1") ActionChains(driver).drag_and_drop(element,tag).perform()
四、鍵盤相關操作
| 序號 | 方法 | 描述 |
|---|---|---|
| 1 | send_keys(Keys.BACK_SPACE) | 刪除鍵(BackSpace) |
| 2 | send_keys(Keys.SPACE) | 空格鍵(Space) |
| 3 | send_keys(Keys.TAB) | Tab 鍵 |
| 4 | send_keys(Keys.ESCAPE) | ESC 鍵 |
| 5 | send_keys(Keys.ENTER) | Enter 回車鍵 |
| 6 | send_keys(Keys.CONTROL,“a”) | Ctrl+a | Ctrl+c | Ctrl+x | Ctrl+v |
| 7 | send_keys(Keys.F1) | F1~F12 |
以Enter回車鍵為例演示
from selenium import webdriver
from selenium.webdriver.common.by import By
# 引入Keys模塊
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
#鍵盤按鍵操作
element=driver.find_element(By.ID,"kw")
element.send_keys("Enter回車事件")
element.send_keys(Keys.ENTER)
五、顯示等待和隱式等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
#隱式等待
driver.implicitly_wait(3)
driver.get("https://www.baidu.com")
#顯示等待
WebDriverWait(driver,5,1).until(expected_conditions.visibility_of_element_located(By.ID,"kw"))
六、方法補充
Python 自動化控制Chrome瀏覽器 DrissionPage
實現(xiàn)代碼
# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: demo.py
@time: 2024/1/30 10:46
@desc:
"""
import json
import os
import time
import datetime
import random
import traceback
from DrissionPage import WebPage, ChromiumOptions, SessionOptions
class DrissionPageDemo(object):
"""
"""
def __init__(self):
"""
"""
def get_page(self, ua=None, incognito=False, time_out=60, headless=False, cookies=None):
"""
:param ua:
:param incognito:
:return:
"""
self.page = None
co = ChromiumOptions()
so = SessionOptions()
if cookies:
so.set_cookies(cookies)
if ua:
co.set_user_agent(user_agent=ua)
co.incognito(incognito)
co.set_argument('--window-size', '800,600')
co.auto_port(True)
co.headless(headless)
co.ignore_certificate_errors(True)
co.mute(True)
co.set_timeouts(page_load=time_out)
self.page = WebPage(driver_or_options=co, session_or_options=so)
return self.page
def save_result(self, html):
"""
:param html:
:return:
"""
os.makedirs("result", exist_ok=True)
file = "result/result_{}.html".format(
datetime.datetime.now().strftime("%Y-%m-%d %H-%M-%S"))
with open(file, "w", encoding="utf-8")as fp:
fp.write(html)
def read_file(self, file):
"""
:param file:
:return:
"""
res = []
with open(file, "r", encoding="utf-8")as fp:
for i in fp:
res.append(i.strip())
return res
def read_json_file(self, file):
"""
:param file:
:return:
"""
with open(file, "r", encoding="utf-8")as fp:
return json.loads(fp.read())
def check_load_over(self):
"""
:return:
"""
def process(self):
"""
:return:
"""
url_list = self.read_file("url.list")
ua_list = self.read_file("ua.list")
cookie_list = self.read_file("cookie.list")
settings = self.read_json_file("settings.json")
time_out = settings["time_out"]
wait = settings["wait"]
save = settings["save"]
incognito = settings["incognito"]
headless = settings["headless"]
while True:
try:
if ua_list:
ua = random.choices(ua_list)[0]
else:
ua = None
if cookie_list:
cookie = random.choices(cookie_list)
else:
cookie = None
self.get_page(ua, incognito, time_out, headless, cookie)
url = random.choices(url_list)[0]
print(f"url : {url}")
self.page.get(url, retry=3, interval=3)
if save:
html = self.page.html
self.save_result(html)
self.page.quit()
if len(wait) == 1:
_sleep = wait[0]
else:
_sleep = random.randint(wait[0], wait[1])
while _sleep >= 0:
print(f"SLEEP : {_sleep}", end='\r')
time.sleep(1)
_sleep -= 1
except BaseException:
print(traceback.print_exc())
os.system("taskkill /F /IM chrome.exe")
if __name__ == '__main__':
dp = DrissionPageDemo()
dp.process()到此這篇關于python實現(xiàn)自動化控制瀏覽器的操作指南的文章就介紹到這了,更多相關python控制瀏覽器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
numpy 進行數(shù)組拼接,分別在行和列上合并的實例
今天小編就為大家分享一篇numpy 進行數(shù)組拼接,分別在行和列上合并的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Django項目創(chuàng)建到啟動詳解(最全最詳細)
這篇文章主要給大家介紹了關于Django項目創(chuàng)建到啟動的步驟,本文介紹的方法算是最全最詳細的一個項目,需要的朋友可以參考下2019-09-09
Python+OpenCV 圖像邊緣檢測四種實現(xiàn)方法
本文主要介紹了通過OpenCV中Sobel算子、Schaar算子、Laplacian算子以及Canny分別實現(xiàn)圖像邊緣檢測并總結了四者的優(yōu)缺點,感興趣的同學可以參考一下2021-11-11

