起因:当ai写作刚开始的时候,我头脑发热,花钱买了一年的。结果发现用手工的方式是不可能用完量的。用模拟操作倒是可以,本着钱不能乱花的原则,我开始想,如何也让python和selenium来完成这项工作。
这个系统和其他的Ai不太一样,一方面他支持问答式,也支持从中间,选中后调出Ai对话框完成问答。
我使用的是第二种方式:比如,我先输入100个问题(段),然后选中每一段,调出Ai对话框,让他回答问题。
其实第一种,我也有测试,但他自动把上下文给联在一起了,超出多少后会出问题。可能是用在其他方面的吧。等以后再看有什么好的用途。
我的目的就是把这120万每月全部用完。不浪费。(注释掉的代码忽略)
import tkinter as tk from selenium.webdriver.common.action_chains import ActionChains from selenium import webdriver from selenium.webdriver.edge.options import Options import time from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
0.创建图形界面
def main(): window = tk.Tk() window.title("xunfei") window.geometry("500x300") url="https://huixie.iflyrec.com/list" # 创建按钮 button_open = tk.Button(window, text="准备浏览器环境", command=lambda: open_edge_browser(url)) button_open.pack() # 创建按钮 button_get_answers = tk.Button(window, text="开始工作", command=lambda: autocomplete_tasks()) button_get_answers.pack() window.mainloop() if __name__ == "__main__": main()
1.登录(自动)测试通过
打开浏览器,
def js_condition(driver): """自定义等待条件函数,检查JavaScript返回值""" return driver.execute_script("return document.readyState") == "complete" def open_edge_browser(url): global driver # driver.implicitly_wait(10) # 设置全局隐式等待时间为10秒 # 设置Edge选项 edge_options = Options() edge_options.use_chromium = True # 向Edge浏览器传递启动参数 edge_options.add_argument('--disable-extensions') # 禁用浏览器扩展 edge_options.add_argument('--disable-gpu') # 禁用GPU硬件加速 driver = webdriver.Edge(options=edge_options) driver.implicitly_wait(40) # 设置全局隐式等待时间为40秒 driver.maximize_window() try: driver.get(url) WebDriverWait(driver, 20).until(js_condition) print("网页已加载完成。") return driver except TimeoutException: print("加载超时,请检查网络连接或网页是否正常。")
输入帐号密码等
def is_login(driver): # 点击登录按钮 locator = (By.CSS_SELECTOR, 'div.btn-login-register') try: # 等待直到元素出现,并且是可点击的 button = WebDriverWait(driver, 30).until( EC.element_to_be_clickable(locator) ) # 点击元素 button.click() except TimeoutException: print("在指定的时间内登录没有出现") # 定位帐号 locator = (By.CSS_SELECTOR, 'input[placeholder="手机号"]') try: # 等待直到元素出现,并且是可编辑的 input_element = WebDriverWait(driver, 10).until( EC.element_to_be_clickable(locator) ) # 清除输入框内容 input_element.clear() # 向输入框发送键值 input_element.send_keys("188888888") except TimeoutException: print("在指定的时间内用户名没有出现或不可编辑") # 定位密码输入框 locator = (By.CSS_SELECTOR, 'input[placeholder="密码"]') try: # 等待直到元素出现,并且是可编辑的 input_element = WebDriverWait(driver, 10).until( EC.element_to_be_clickable(locator) ) # 清除输入框内容 input_element.clear() # 向输入框发送键值 input_element.send_keys("11111111111") except TimeoutException: print("在指定的时间内用户名没有出现或不可编辑") #定位登录按钮 locator = (By.CSS_SELECTOR, 'div.login-btn') # 使用WebDriverWait等待元素出现 try: # 等待直到元素出现,并且是可点击的 button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable(locator) ) # 点击元素 button.click() except TimeoutException: print("在指定的时间内登录没有出现") print("登录成功") def autocomplete_tasks(): is_login(driver)
2.进入工作界面
手动部分:
我输入的100个问题,打印让他帮我自动回答的。你随意。
注意:工作的页面我设定的所有标签页中的最后一个。
获取最后一个 标签页
参考代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器 chrome_options = Options() service = Service(executable_path='path/to/chromedriver') # 替换为你的chromedriver路径 driver = webdriver.Chrome(service=service, options=chrome_options) try: # 打开一个网页,以便之后有多个标签页进行演示 driver.get("https://www.example.com") # 假设在此之后通过某些操作打开了新的标签页,例如点击链接等 # 获取所有窗口句柄 window_handles = driver.window_handles # 遍历窗口句柄,定位到最后一个打开的标签页 for handle in window_handles: driver.switch_to.window(handle) # 切换到当前循环的窗口 # 此时已经位于最后一个标签页,可以执行相应操作 print("当前页面的URL是:", driver.current_
webchromecli浏览器urlmmocssctogpuactionai对话等待时间script用户名浏览器扩展doc自定义javajavascriptpython