一、控制浏览器相关操作
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
实现代码
# !/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控制浏览器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
            
                                            
                                            
                                            
                                            
                                            
                                            
发表评论