赞
踩
昨天做得不太好,今天再来一次,我发现,只要写得多,一定会有发现。
- # 定义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}")
参考代码
- 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()
- 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()
- 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 True
-
- except Exception as e:
- print(f"移动到最后一页,发生错误:{e}")
- 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
- def autocomplete_tasks1():
- if switch_to_last_window(driver):
- is_back_icon(driver)
我试着先取出所有的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"]').text
- level1_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 = None
-
- results.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
def autoco
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。