import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as Ec # 配置浏览器 options = webdriver.ChromeOptions() options.add_argument('--start-maximized') # 浏览器窗口最大化 options.add_argument("--disable-web-security"
1、安装 pip install playwright 2、安装驱动 安装所有驱动 playwright install 安装指定驱动 # Firefox playwright install firefox # Chromium playwright install chromium # WebKit playwright install webkit 指定需要启动的浏览
1、整个页面截图 page.screenshot(path='example.png') 2、指定元素截图 # 选择你想要截图的元素 element = page.locator('//form') # 捕获元素的截图 element.screenshot(path='element.png') 3、指定坐标截图 page.screenshot(path='page_part.png', clip={'x': 0, 'y': 0, 'width': 300, 'height': 300})
import pandas as pd def df_add_to_excel(df, file_path): with pd.ExcelWriter(file_path, mode='a', engine='openpyxl', if_sheet_exists='overlay') as writer: # 将数据追加到Excel文件中 df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=writer.sheets['Sheet1'].max_row, header=False) if_sheet_exists='overlay' 表示如果工作表已存在,就覆盖它
import sys from PyQt5 import uic from PyQt5.QtWidgets import QApplication class Stats: def __init__(self): # 从文件中加载UI定义 self.ui = uic.loadUi("main.ui") if __name__ == "__main__": App = QApplication(sys.argv) # 创建QApplication对象,作为GUI主程序入口 stats = Stats() stats.ui.show() # 显示主窗体 sys.exit(App.exec_()) # 循环中等待
PyQt5实现 import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QMessageBox, QLineEdit, \ QHBoxLayout, QDesktopWidget import zipfile import os class Installer(QWidget): def __init__(self): super().__init__() self.zip_path = 'Everything-1.4.1.1022.x64.zip' # 程序压缩包路径
首先看一下需求 排序列表:首先对列表进行排序。 分组:将排序后的列表按每组5个元素进行分组。 组内排序:在每个组内,将元素按长度进行排序。 返回一个一维列表 lst = ['a', 'bbbbbb', 'j', 'gdrgd', 'gfgfg', 'sfsf', 'sfeg', 'sg', 'gfgfg', 'gfgf', 'fg', 'gfgf'] # 1. 对列表进行排序 sorted_lst = sorted(lst) # 2. 按每组5个元素进行分组,组内按元素长度进行排序 # 3
import time from typing import Union import requests from playwright.async_api import Page, expect, BrowserContext # 切换到 指定的 标签页,通过 title 名称 或 url 地址 async def switch_to_page(context: BrowserContext, title: str = None, url: str = None, timeout: int = None) -> Union[Page | bool]: """ :summary: 切换到 指定的 标签页,通过 title 名称 或 url 地址 :param contex
# 监听 并 关闭 弹窗 async def over_dialog(page): # 为页面设置弹窗监听器,一旦弹窗出现就关闭它 page.on('dialog', lambda dialog: asyncio.create_task(dialog.dismiss()))
1、retry装饰器 不支持异步函数 from retrying import retry @retry(stop_max_attempt_number=3) def my_function(): print("执行函数") raise ValueError("这是一个错误") # 调用函数 my_function() 2、自己写一个 支持异步函数 import asyncio import inspect import time def retry_on_exception(retries, excep