当前位置:   article > 正文

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

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

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

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

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

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

参考代码

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

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

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

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

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

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

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

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

7.初步测试,很成功

  1. def autocomplete_tasks1():
  2. if switch_to_last_window(driver):
  3. is_back_icon(driver)

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

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

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

 这是取出的代码:

  1. def get_level1_and_level3_info(driver):
  2. # 定义等待元素出现的超时时间
  3. timeout = 10
  4. # 定位 my-menus 下的所有 level1 节点
  5. level1_nodes = WebDriverWait(driver, timeout).until(
  6. EC.presence_of_all_elements_located((By.XPATH, '//div[@class="my-menus"]//div[@class="el-tree-node is-expanded is-focusable level1"]'))
  7. )
  8. # 提取 level1 和 level3 的信息
  9. results = []
  10. for level1_node in level1_nodes:
  11. level1_text = level1_node.find_element(By.XPATH, './/div[@class="el-tree-node__content"]').text
  12. level1_data_key = level1_node.get_attribute('data-key')
  13. # 查找 level1 节点下的 level3 节点
  14. try:
  15. level3_text = level1_node.find_element(By.XPATH, './/div[@class="el-tree-node__children"]').text
  16. # level3_data_key = level3_node.get_attribute('data-key')
  17. except NoSuchElementException:
  18. level3_text = None
  19. # level3_data_key = None
  20. results.append({
  21. "node":level1_node,
  22. "level1_text": level1_text,
  23. "data_key": level1_data_key,
  24. "level3_text": level3_text,
  25. # "level3_data_key": level3_data_key
  26. })
  27. return results

10.能点击

def autoco
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/586129
推荐阅读
相关标签
  

闽ICP备14008679号