当前位置:首页>python>python自动化浏览器操作之WorkBuddy智能体交互测试

python自动化浏览器操作之WorkBuddy智能体交互测试

  • 2026-09-09 09:14:51
python自动化浏览器操作之WorkBuddy智能体交互测试

python自动化浏览器操作之WorkBuddy智能体交互测试

大家好,WorkBuddy智能体有个web页面https://www.workbuddy.cn/app,这个页面目前好像不收费...你懂的

本文通过Selenium操作这个web页面,进行后台的简单交互,即:本地python运行窗口输入一个交互词条,后台自动打开chrome,登录WorkBuddy,进行智能体对话,并获取对话的结果并再运行窗口显示出来

Selenium的安装以及和本地浏览器(chrome)的集成,可查看我上一篇内容,这里就不赘述了

WorkBuddy的页面支持对话、图片、视频、文档、等操作,这里是演示哈,只做了对话的集成,跑通了就行,其余功能应该也只是代码调试和时间的事儿

要解决几个问题:

1、WorkBuddy登录

每次打开https://www.workbuddy.cn/app都会让你登录,代码将登录信息缓存到本地cookies文件,这样只需要第一次打开WorkBuddy窗口的时候登录一次,后边只要加载之前的cookies信息

如果要更换登录用户或者之前的登录信息有变更之类的,可以调整代码中的v_first_time,配置为1即可

2、获取输入框及提交交互词条

workbuddy的输入框是变化的,初始化是一个data-slate-zero-width的span窗口,当键盘有输入keydown时,javascript会删掉data-slate-zero-width,新插入输入框,将键盘内容写入,然后"发送"按钮才可用

这块儿其实挺绕的,应该是为了防止别的工具页面套用吧,浪费不少时间,也是做了不少测试:web跟踪、断点、event监听、Selenium各种方法测试,等等..

3、返回结果的处理

web交互信息提交后,WorkBuddy会先进入"深度思考",各种网页查询,后台ai分析等,最后将“已完成”结果展示出来,也挺绕,需要不简单做页面判断

总之,浪费了我快一周时间....总算是有点眉目了,不多说直接上代码

#!/usr/bin/env python3

# coding=gbk

#

#  workbuddychat.py

import sys

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.action_chains import ActionChains

import json

import time

#0:不做页面登录。第一次运行时这里改成1,然后运行时登录一下,系统会记录登录后的cookies

v_first_time=0

def workbuddychat(v_input='北京今日天气'):

    loginurl="https://www.workbuddy.cn/login/?platform=agents&state=0"

    chaturl="https://www.workbuddy.cn/app"

    options = webdriver.ChromeOptions()

    options.add_experimental_option("useAutomationExtension", False)

    options.add_experimental_option("excludeSwitches", ["enable-automation"])

    driver = webdriver.Chrome(options=options)

    global v_first_time

    #cookies_workbuddy.json文件不存在,需要做登录

    try:

        with open("c:\cookies_workbuddy.json", "r"):

            pass

    except FileNotFoundError:

        v_first_time=1        

    if v_first_time==1:

        driver.get(loginurl)

        print("首次需要登录WorkBuddy,请处理页面登录信息(20秒)....")

        time.sleep(20)

        cookies =driver.get_cookies()

        with open("c:\cookies_workbuddy.json", "w") as f:

            json.dump(cookies, f)

        v_first_time=0

    else:

        #driver.delete_all_cookies()

        driver.get(chaturl)

        with open("c:\cookies_workbuddy.json", "r") as f:

            cookies = json.load(f)

        for cookie in cookies:

            driver.add_cookie(cookie)

    driver.get(chaturl)

    driver.refresh()

    print("等待WorkBuddy页面加载...")

    #等待页面加载...

    time.sleep(5)

    v_div = driver.find_element(By.CSS_SELECTOR, "div._editable_1xsqb_1")

    v_div.send_keys(v_input)

    #v_spana = driver.find_element(By.CSS_SELECTOR, "div._editable_1xsqb_1 > p > span > span")

    #driver.execute_script("arguments[0].dispatchEvent(new KeyboardEvent('keydown',{key: '1'}))", v_spana)

    #driver.execute_script("arguments[0].dispatchEvent(new KeyboardEvent('keypress',{key: '1'}))", v_spana)

    v_sub=driver.find_element(By.CSS_SELECTOR,"[class='_icon_981i8_1 _large_981i8_32 _customContent_981i8_42']")

    ActionChains(driver).move_to_element(v_sub).click().perform()

    print("词条:'"+v_input+"',已提交WorkBuddy,深度思考中....")

    time.sleep(5)

    v_waiteflay=1

    v_result=0

    while v_waiteflay < 16:

        chat_stats=driver.find_elements(By.CSS_SELECTOR, "div.avatar-fold-line > span.avatar-fold-status")

        if chat_stats:

            if chat_stats[-1].text.startswith('已完成'):

                print("WorkBuddy交互",chat_stats[-1].text)

                v_result=1

                break;

        time.sleep(2)

        v_waiteflay+=1

        if v_waiteflay == 16:

            print('30+秒未收到反馈,本次交互失败被认定失败!请检查网络或者系统配置...')

    if v_waiteflay<16 and v_result ==1:

        chat_results=driver.find_elements(By.CLASS_NAME, "_assistantTextContent_7jxnj_195")

        print(chat_results[-1].text)

    print('WorkBuddy退出中...')

    time.sleep(3)    

    driver.quit()

def main(args):

    print('--------python模拟web页面类操作---------')

    print('--------WorkBuddy智能体交互测试---------')

    while True:

        print('----------------------------------------')

        v_input=input("请输入WorkBuddy对话内容(0退出):")

        if v_input=='0':

            print('即将退出...')

            break

        elif v_input:

            workbuddychat(v_input)

        else:

            print('输入内容为空,系统将默认反馈:"北京今日天气"词条的交互')

            workbuddychat('北京今日天气')

    return 0

if __name__ == '__main__':

    sys.exit(main(sys.argv[1:]))

ok,大概就是这些了,只是简单集成哈,跑的通就行:) ,如有需要再进行后续开发了

代码里有很多等待time.sleep时间哈,包括我设置了WorkBuddy交互的时长(如果30+秒就做退出),大家可以根据自己网络和硬件配置进行调整

我们看一下跑的结果

已关注
关注
重播 分享 赞

我本地之前登录过,上边视频没有做WorkBuddy登录,别的也没什么了

这个集成,大家觉得有用吗?

有需要随时微信1364125229反馈哈

最新文章

随机文章