# 基础系统操作 (win32api)import win32apiwin32api.MessageBox(0, "Hello", "Title", 1) # 显示消息框win32api.GetSystemTime() # 获取当前系统时间win32api.GetCursorPos() # 获取鼠标当前位置win32api.SetCursorPos((100, 200)) # 设置鼠标位置win32api.GetComputerName() # 获取计算机名称win32api.GetUserName() # 获取当前用户名win32api.GetLastError() # 获取最后一个错误码win32api.Beep(1000, 500) # 发出蜂鸣声(频率,持续时间)# 窗口与界面管理 (win32gui)import win32guiwin32gui.FindWindow(None, "无标题 - 记事本") # 通过标题查找窗口句柄win32gui.FindWindow("Notepad", None) # 通过类名查找窗口句柄win32gui.GetWindowText(123456) # 获取指定窗口标题win32gui.SetWindowText(123456, "新标题") # 设置指定窗口标题win32gui.ShowWindow(123456, 0) # 隐藏窗口(0隐藏,1显示,2最小化,3最大化)win32gui.EnumWindows(lambda hwnd, param: print(win32gui.GetWindowText(hwnd)), None) # 枚举所有窗口win32gui.GetForegroundWindow() # 获取当前激活窗口句柄win32gui.SetForegroundWindow(123456) # 将窗口置前win32gui.MoveWindow(123456, 0, 0, 800, 600, True) # 移动并调整窗口大小(x,y,宽,高,是否重绘)win32gui.IsWindowVisible(123456) # 判断窗口是否可见win32gui.CloseWindow(123456) # 关闭窗口win32gui.DestroyWindow(123456) # 销毁窗口win32gui.GetWindowRect(123456) # 获取窗口矩形区域(左,上,右,下)win32gui.GetClientRect(123456) # 获取窗口客户区矩形win32gui.ScreenToClient(123456, (100, 200))# 屏幕坐标转客户区坐标win32gui.ClientToScreen(123456, (100, 200))# 客户区坐标转屏幕坐标win32gui.EnableWindow(123456, False) # 启用/禁用窗口(False禁用)win32gui.SetActiveWindow(123456) # 激活窗口# 文件与磁盘操作 (win32file)import win32filehandle = win32file.CreateFile("test.txt", 0x80000000, 0, None, 3, 0, None) # 创建/打开文件win32file.ReadFile(handle, 1024) # 读取文件(读取1024字节)win32file.WriteFile(handle, b"Hello World") # 写入文件win32file.CloseHandle(handle) # 关闭文件句柄win32file.GetFileSize(handle) # 获取文件大小win32file.GetFileAttributes("test.txt") # 获取文件属性win32file.SetFileAttributes("test.txt", 0x00000002) # 设置文件属性(2=隐藏)win32file.CopyFile("src.txt", "dst.txt", True) # 复制文件(True=如果目标存在则失败)win32file.MoveFile("old.txt", "new.txt") # 移动文件win32file.DeleteFile("test.txt") # 删除文件win32file.CreateDirectory("new_folder", None) # 创建目录win32file.RemoveDirectory("new_folder") # 删除目录win32file.GetLogicalDrives() # 获取所有逻辑驱动器win32file.GetDiskFreeSpace("C:\\") # 获取磁盘剩余空间# 进程管理 (win32process)import win32processhandle, thread_id, pid, tid = win32process.CreateProcess(None, "notepad.exe", None, None, False, 0, None, None, 0) # 创建进程pid_list = win32process.EnumProcesses() # 枚举所有进程IDwin32process.TerminateProcess(handle, 0) # 终止进程win32process.GetProcessTimes(handle) # 获取进程时间信息win32process.GetCurrentProcessId() # 获取当前进程IDwin32process.GetCurrentThreadId() # 获取当前线程IDwin32process.SuspendThread(thread_id) # 挂起线程win32process.ResumeThread(thread_id) # 恢复线程win32process.GetExitCodeProcess(handle) # 获取进程退出代码win32process.WaitForSingleObject(handle, 10000) # 等待进程结束(10秒超时)# 注册表操作 (win32registry)import win32registrykey = win32registry.OpenKey(win32registry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 131097) # 打开注册表键win32registry.QueryValueEx(key, "ProgramName") # 查询注册表值win32registry.SetValueEx(key, "ProgramName", 0, 1, "C:\\test.exe") # 设置注册表值(1=字符串类型)win32registry.EnumKey(key, 0) # 枚举子键(索引0)win32registry.EnumValue(key, 0) # 枚举值(索引0)win32registry.DeleteKey(key, "SubKey") # 删除子键win32registry.DeleteValue(key, "ValueName") # 删除值win32registry.CreateKey(win32registry.HKEY_CURRENT_USER, "Software\\MyApp") # 创建键win32registry.CloseKey(key) # 关闭注册表键# 剪贴板操作 (win32clipboard)import win32clipboardwin32clipboard.OpenClipboard() # 打开剪贴板win32clipboard.EmptyClipboard() # 清空剪贴板win32clipboard.SetClipboardText("Hello Clipboard") # 设置剪贴板文本text = win32clipboard.GetClipboardText() # 获取剪贴板文本win32clipboard.GetClipboardData(13) # 获取剪贴板数据(13=文本格式,1=位图格式)win32clipboard.SetClipboardData(13, "Data") # 设置剪贴板数据win32clipboard.CloseClipboard() # 关闭剪贴板win32clipboard.IsClipboardFormatAvailable(13) # 检查剪贴板是否有指定格式数据# 打印机操作 (win32print)import win32printwin32print.GetDefaultPrinter() # 获取默认打印机名称win32print.EnumPrinters(2) # 枚举所有打印机win32print.OpenPrinter("Printer Name") # 打开打印机win32print.ClosePrinter(handle) # 关闭打印机win32print.GetPrinter(handle) # 获取打印机信息
# 先定位一个搜索框元素search_box = driver.find_element(By.ID, "kw")# ---------- 基本交互 ----------# 输入文本search_box.send_keys("Selenium教程")# 清空输入框search_box.clear()# 重新输入并提交search_box.send_keys("Python自动化")search_box.submit() # 提交表单# 点击元素search_button = driver.find_element(By.ID, "su")search_button.click()# ---------- 获取元素信息 ----------# 获取元素的文本内容text = search_button.textprint(f"按钮文本: {text}")# 获取元素的属性value = search_box.get_attribute("value") # 获取输入框的值class_name = search_box.get_attribute("class")print(f"输入框的值: {value}")# 检查元素是否可见is_displayed = search_box.is_displayed()print(f"是否可见: {is_displayed}")# 检查元素是否可用is_enabled = search_box.is_enabled()print(f"是否可用: {is_enabled}")# 检查元素是否被选中(用于复选框、单选框)checkbox = driver.find_element(By.CSS_SELECTOR, "input[type='checkbox']")is_selected = checkbox.is_selected()print(f"是否选中: {is_selected}")# 获取元素的CSS属性font_size = search_button.value_of_css_property("font-size")color = search_button.value_of_css_property("color")print(f"字体大小: {font_size}, 颜色: {color}")# ---------- 键盘操作 ----------search_box.send_keys("Selenium")search_box.send_keys(Keys.CONTROL, 'a') # 全选search_box.send_keys(Keys.CONTROL, 'c') # 复制search_box.send_keys(Keys.CONTROL, 'v') # 粘贴search_box.send_keys(Keys.ENTER) # 回车# ---------- 鼠标操作 ----------from selenium.webdriver.common.action_chains import ActionChains# 创建动作链actions = ActionChains(driver)# 鼠标悬停menu = driver.find_element(By.LINK_TEXT, "设置")actions.move_to_element(menu).perform()# 右键点击actions.context_click(search_box).perform()# 双击actions.double_click(search_box).perform()# 拖拽source = driver.find_element(By.ID, "draggable")target = driver.find_element(By.ID, "droppable")actions.drag_and_drop(source, target).perform()# 按住并移动actions.click_and_hold(source).move_to_element(target).release().perform()