python实现自动化控制浏览器的操作指南

作者:

文章目录
  • 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)
  • 序号 方法 描述 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 实现代码 # !/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实现自动化控制浏览器的操作指南的文章就介绍到这了,更多相关python控制浏览器内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 简化Python浏览器自动化的三种模式 使用python实现一个浏览器自动化的脚本 Python使用pyppeteer模块实现无头浏览器自动化 Python之Selenium自动化浏览器测试详解 python中的selenium安装的步骤(浏览器自动化测试框架) Python利用splinter实现浏览器自动化操作方法
  • 目录
    • 一、控制浏览器相关操作
    • 二、webdriver常用方法
    • 三、鼠标操作
    • 四、键盘相关操作
    • 五、显示等待和隐式等待
    • 六、方法补充

    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)
    

    序号 方法 描述
    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

    实现代码

    # !/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实现自动化控制浏览器的操作指南的文章就介绍到这了,更多相关python控制浏览器内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 简化Python浏览器自动化的三种模式
    • 使用python实现一个浏览器自动化的脚本
    • Python使用pyppeteer模块实现无头浏览器自动化
    • Python之Selenium自动化浏览器测试详解
    • python中的selenium安装的步骤(浏览器自动化测试框架)
    • Python利用splinter实现浏览器自动化操作方法

    站内搜索