笔记:完善python selenium 讯飞写作的整体自动化

昨天做得不太好,今天再来一次,我发现,只要写得多,一定会有发现。

1、加入本地目录,不要一直登录。

# 定义Edge浏览器的用户数据目录edge_user_data_dir = r"C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default"# 设置Edge选项edge_options = Options()edge_options.use_chromium = True# 向Edge浏览器传递启动参数edge_options.add_argument(f"--user-data-dir={edge_user_data_dir}")

2.如果有登录按钮才登录,否则就不登录了。

参考代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 初始化Edge浏览器
edge_options = Options()
edge_options.add_argument('--headless')  # 可选:如果需要在无头模式下运行
edge_options.add_argument('--disable-gpu')  # 可选:在无头模式下防止GPU错误
driver = webdriver.Edge(options=edge_options)# 设置超时时间,例如10秒
timeout = 10# 导航到目标URL
driver.get('https://huixie.iflyrec.com/list')# 定位元素,使用类名查找
try:login_register_button = WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.CLASS_NAME, 'btn-login-register')))print("元素找到,执行下一步操作...")# 如果你想点击这个元素,可以添加以下代码login_register_button.click()
except TimeoutException:print("元素未找到,超时了!")# 清理资源
driver.quit()

3、换一种思路,如何有工作台了,则提示已经登录,否则,则登录过程。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 初始化Edge浏览器
edge_options = Options()
edge_options.add_argument('--headless')  # 可选:如果需要在无头模式下运行
edge_options.add_argument('--disable-gpu')  # 可选:在无头模式下防止GPU错误
driver = webdriver.Edge(options=edge_options)# 设置超时时间,例如10秒
timeout = 10# 导航到目标URL
driver.get('https://huixie.iflyrec.com/list')# 定位元素,使用类名和包含的文本
try:dashboard_element = WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.XPATH, '//div[@class="item-wrap-name" and contains(text(), "工作台")]')))print("元素找到,已登录!")
except TimeoutException:print("元素未找到,可能未登录!")# 清理资源
driver.quit()

4.至此,完成进入界面,无论新建或原来的文档,根据实际

5.切换到最后一个窗口,即准备自动化工作的窗口。

def  switch_to_last_window(driver):try:# 获取所有窗口句柄window_handles = driver.window_handles# 遍历窗口句柄,定位到最后一个打开的标签页for handle in window_handles:driver.switch_to.window(handle)  # 切换到当前循环的窗口# 此时已经位于最后一个标签页,可以执行相应操作print("当前页面的URL是:", driver.current_url)return Trueexcept Exception as e:print(f"移动到最后一页,发生错误:{e}")

6。判断是否有返回主页的按钮,用以最后的返回。

def is_back_icon(driver):# 等待页面加载完成WebDriverWait(driver, 30).until(js_condition)# 等待反馈元素变得可交互back_icon_element = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.svg-icon.pointer.icon-back-icon'))# 或者使用By.CLASS_NAME)if back_icon_element:print("出现了返回主页按键,可以工作了")return True,back_icon_element

7.初步测试,很成功

def autocomplete_tasks1():if switch_to_last_window(driver):is_back_icon(driver)

8.我先把所有的问题都改成h1了,很方便浏览。原来直接使用p样式,简直是坑人。

 9.取出h1样式的内容及下一级内容,返回相关参数,用以下一步操作。

我试着先取出所有的h1级的问题及是否回答过的内容。该问题如果回答过,会有一个当时提出问题的内容。如

 这是取出的代码:

def get_level1_and_level3_info(driver):# 定义等待元素出现的超时时间timeout = 10# 定位 my-menus 下的所有 level1 节点level1_nodes = WebDriverWait(driver, timeout).until(EC.presence_of_all_elements_located((By.XPATH, '//div[@class="my-menus"]//div[@class="el-tree-node is-expanded is-focusable level1"]')))# 提取 level1 和 level3 的信息results = []for level1_node in level1_nodes:level1_text = level1_node.find_element(By.XPATH, './/div[@class="el-tree-node__content"]').textlevel1_data_key = level1_node.get_attribute('data-key')# 查找 level1 节点下的 level3 节点try:level3_text = level1_node.find_element(By.XPATH, './/div[@class="el-tree-node__children"]').text# level3_data_key = level3_node.get_attribute('data-key')except NoSuchElementException:level3_text = None# level3_data_key = Noneresults.append({"node":level1_node,"level1_text": level1_text,"data_key": level1_data_key,"level3_text": level3_text,# "level3_data_key": level3_data_key})return results

10.能点击

def autoco

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/698612.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring AI默认gpt版本源码探究

Spring AI默认gpt版本源码探究 调试代码 通过调试,可以看到默认mdel为gpt-3.5-turbo 源码探究 进入OpenAiChatClient类查看具体的代码信息 可以看到如下代码,在有参构造方法中可以看到,model默认使用OpenAiApi.DEFAULT_CHAT_MODELpublic…

【unity小技巧】减少Unity中的构建打包大小

文章目录 正常默认打包查看编辑器打包日志压缩图片压缩网格模型压缩贴图压缩音频文件只打64位包最终大小完结 正常默认打包 这里以安卓为例。先什么都不干,直接打包安卓apk,查看包大小 查看编辑器打包日志 搜索build report构建报告。构建报告我们应该…

压力给到 Google,OpenAI 发布 GPT-4o 来了

北京时间5月14日凌晨1点,OpenAI 开启了今年的第一次直播,根据官方消息,这次旨在演示 ChatGPT 和 GPT-4 的升级内容。在早些时候 Sam Altman 在 X 上已经明确,「我们一直在努力开发一些我们认为人们会喜欢的新东西,对我…

26版SPSS操作教程(高级教程第二十章)

目录 前言 粉丝及官方意见说明 第二十章一些学习笔记 第二十章一些操作方法 神经网络与支持向量机 人工神经网络(artificial neural network,ANN) 假设数据 具体操作 结果解释 对案例的进一步分析 结果解释 ​编辑 尝试将模型复…

如何让机器理解人类语言?Embedding技术详解

如何让机器理解人类语言?Embedding技术详解 文章目录 如何让机器理解人类语言?Embedding技术详解介绍什么是词嵌入?什么是句子嵌入?句子嵌入模型实现句子嵌入的方法值得尝试的句子嵌入模型 句子嵌入库实践Step 1Step 2Step 3 Doc2…

【其他学习参考文档记录】

交叉编译学习参考 nodejs 交叉编译-cliff工作室

ComfyUI相见恨晚的提示词插件,简直堪称神器!

之前我曾介绍过一款专为SD设计的中文提示词插件——prompt-all-in-one,想必使用过的小伙伴们都已经感受到了它的便捷与实用吧。 不过,那款插件是基于webUI版本的,而现在,越来越多的朋友开始探索ComfyUI这一新选择。 假如在Comfy…

【源码+文档+调试讲解】微信小程序家政项目小程序

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序家政项目小程序的开发全过程。通过分析微信小程序家政项目小程序管理的不足,创建了一个计算机管理微信小程序家政项目小程序的方案。文章介…

OpenAI GPT-4o - 介绍

本文翻译整理自: Hello GPT-4o https://openai.com/index/hello-gpt-4o/ 文章目录 一、关于 GPT-4o二、模型能力三、能力探索四、模型评估1、文本评价2、音频 ASR 性能3、音频翻译性能4、M3Exam 零样本结果5、视觉理解评估6、语言 tokenization 六、模型安全性和局限…

Vitis HLS 学习笔记--理解串流Stream(1)

目录 1. 介绍 2. 示例 2.1 代码解析 2.2 串流数据类型 2.3 综合报告 3. 总结 1. 介绍 在Vitis HLS中,hls::stream是一个用于在C/C中进行高级合成的关键数据结构。它类似于C标准库中的std::stream,但是专门设计用于硬件描述语言(如Veri…

答辩PPT设计太耗时?aippt工具,AI一站式服务

这些网站我愿称之为制作答辩PPT的神! 很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路,一窍不通。但这并不是你们的错,对于平时没接触过相关方面,第一次搞答辩PPT的人来说,这是很正常的一件事。一个好的答辩PPT…

用vue实现json模版编辑器

用vue实现json模版编辑器 控件区表单区配置项区 (还没写)业务逻辑 设想业务逻辑是拖拽控件生成表单 动手做了一个简单的demo 业务的原型图设想如下所示 其中使用的技术主要是vuedragger 控件区 做控件区的时候首先我们要有确定的配置项 其实也很简单 …