开发者

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

目录
  • 一、控制浏览器相关操作
  • 二、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)

二、webdriver常用方法

序号方法描述
1clear()清除
2send_keys(“value”)输入内容
3click()点击事件
4submit()提交
5size元素尺寸
6text元素文本
7get_attribute(python)获取属性
8is_displayed()查看该元素是否用户可见

三、鼠标操作

序号方法描述
1click()鼠标点击事件
2move_to_element()鼠标悬停效果
3context_click()鼠标右击事件
4double_click()鼠标双击事件
5drag_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_tohttp://www.devze.com_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()

四、键盘相关操作

序号方法描述
1send_keys(Keys.BACK_SPACE)删除键(BackSpace)
2send_keys(Keys.SPACE)空格键(Space)
3send_keys(Keys.TAB)Tab 键
4send_keys(Keys.ESCAPE)ESC 键
5send_keys(Keys.ENTER)Enter 回车键
6send_keys(Keys.CONTROL,“a”)Ctrl+a | Ctrl+c | Ctrl+x | Ctrl+v
7send_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控制浏览器内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜