起因:当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_