python實(shí)現(xiàn)自動(dòng)化控制瀏覽器的操作指南
一、控制瀏覽器相關(guā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、控制瀏覽器前進(jìn)forward()和后退back()
#前進(jìn) driver.forward() #后退 driver.back()
3、刷新refresh()
#刷新頁面 driver.refresh()
4、窗口截屏
img_dir = "C:\\測(cè)試\\img.png" driver.save_screenshot(img_dir)
二、webdriver常用方法
序號(hào) | 方法 | 描述 |
---|---|---|
1 | clear() | 清除 |
2 | send_keys(“value”) | 輸入內(nèi)容 |
3 | click() | 點(diǎn)擊事件 |
4 | submit() | 提交 |
5 | size | 元素尺寸 |
6 | text | 元素文本 |
7 | get_attribute() | 獲取屬性 |
8 | is_displayed() | 查看該元素是否用戶可見 |
三、鼠標(biāo)操作
序號(hào) | 方法 | 描述 |
---|---|---|
1 | click() | 鼠標(biāo)點(diǎn)擊事件 |
2 | move_to_element() | 鼠標(biāo)懸停效果 |
3 | context_click() | 鼠標(biāo)右擊事件 |
4 | double_click() | 鼠標(biāo)雙擊事件 |
5 | drag_and_drop() | 鼠標(biāo)拖動(dòng)事件 |
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、鼠標(biāo)懸停
#鼠標(biāo)懸停 ActionChains(driver).move_to_element(element).perform()
3、鼠標(biāo)右擊事件
#鼠標(biāo)右擊擊事件 ActionChains(driver).context_click(element).perform()
4、鼠標(biāo)雙擊事件
#鼠標(biāo)雙擊事件 ActionChains(driver).double_click(element).perform()
5、鼠標(biāo)拖動(dòng)事件
#鼠標(biāo)拖動(dòng)事件 tag = driver.find_element(By.CSS_SELECTOR,"#div1") ActionChains(driver).drag_and_drop(element,tag).perform()
四、鍵盤相關(guān)操作
序號(hào) | 方法 | 描述 |
---|---|---|
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"))
六、方法補(bǔ)充
Python 自動(dòng)化控制Chrome瀏覽器 DrissionPage
實(shí)現(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()
到此這篇關(guān)于python實(shí)現(xiàn)自動(dòng)化控制瀏覽器的操作指南的文章就介紹到這了,更多相關(guān)python控制瀏覽器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例
今天小編就為大家分享一篇numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05Django項(xiàng)目創(chuàng)建到啟動(dòng)詳解(最全最詳細(xì))
這篇文章主要給大家介紹了關(guān)于Django項(xiàng)目創(chuàng)建到啟動(dòng)的步驟,本文介紹的方法算是最全最詳細(xì)的一個(gè)項(xiàng)目,需要的朋友可以參考下2019-09-09Python+OpenCV 圖像邊緣檢測(cè)四種實(shí)現(xiàn)方法
本文主要介紹了通過OpenCV中Sobel算子、Schaar算子、Laplacian算子以及Canny分別實(shí)現(xiàn)圖像邊緣檢測(cè)并總結(jié)了四者的優(yōu)缺點(diǎn),感興趣的同學(xué)可以參考一下2021-11-11