当前位置:AIGC资讯 > AIGC > 正文

讯飞AI写作与python及selenium结合,自动化处理的编写笔记,这是我思考和整理了接近一周才完成的,可能我太笨了。

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

更新时间 2024-07-05