selenium半自动化上传通义千问智能体-小白篇

场景:最近因工作需要,要在通义千问大模型平台创建自己的智能体。话说其本身创建流程并不复杂,名称、简介、开场白等等这些数据也都是准备好的,但创建数量居多,也着实令人头大!!!

于是乎,我准备写一个自动化脚本来帮助我创建这些该s的智能体。接下来,说干就干!

1.环境准备

首先,我们先查看一下自己谷歌浏览器的版本。方法:打开谷歌浏览器=》右上角三个小圆点=》帮助=》关于Google Chrome

看到浏览器版本之后,接着我们要去下载对应的谷歌驱动程序。(注意:下载高版本和低版本的驱动都不行,一定下载和浏览器版本对应的驱动版本)

最新版本下载地址:https://googlechromelabs.github.io/chrome-for-testing/,找到对应的版本下载下来即可。

113.x.x.x-133.x.x.x版本下载地址:https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json

老版本下载地址:CNPM Binaries Mirror (npmmirror.com)

压缩包下载完成后,先解压出来备孕!接着我们打开jupyter notebook,创建我们工程的目录。创建好后把驱动程序拷进来!

恭喜你,你已经完成了复杂的环境准备工作!👏👏👏

2.程序编写

接下来我会分两个程序来说明,第一个程序的目的是收集登录的cookie,方便第二个程序跳过登录操作。第二个程序的目的则是创建通义千问智能体。

第一个程序:

#1.导包
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import InvalidCookieDomainException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
import time
import json




#2.初始化环境
chrome_options = webdriver.ChromeOptions()
chrome_driver_path = r"C:\Users\Administrator\AppData\Local\Google\Chrome\Bin\chromedriver.exe"
service = Service(executable_path=chrome_driver_path)
browser = webdriver.Chrome(service=service, options=chrome_options)




#3.打开通义千问网页,窗口最大化
browser.get("https://tongyi.aliyun.com/qianwen/agent/chat?agentId=A-59195-2e80e42d")
browser.maximize_window()





#4.点击登录div
# 假设 driver 已经初始化
wait = WebDriverWait(browser, 10)  # 等待最长10秒

# 先等待元素存在,再等待元素可点击
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.sc-fufdwm.dwjJOT')))
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.sc-fufdwm.dwjJOT')))
element.click()





#5.获取登录cookie,先执行此段代码,再回到浏览器手动登录通义千问平台(必须淘宝扫码登录)
flag = True
print("等待登录……")
while flag:
    try:
        browser.find_element(By.XPATH,
                             "//div[@class='sc-dntaoT DZpVO popupUser']|//ul[@class='sc-UblHX jcunVE']"
                             "//a[@class='header-entry-avatar']")
        flag = False
    except NoSuchElementException as e:
        time.sleep(3)
print("已登录,现在为您保存cookie...")
with open('cookie.txt', 'w', encoding='u8') as f:
    json.dump(browser.get_cookies(), f)
browser.close()
print("cookie保存完成,游览器已自动退出...")

第二个程序:

#1.导包
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import InvalidCookieDomainException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from pywinauto import Application
import time
import json




#2.初始化驱动,打开浏览器
chrome_options = webdriver.ChromeOptions()
chrome_driver_path = r"C:\Users\Administrator\AppData\Local\Google\Chrome\Bin\chromedriver.exe"
service = Service(executable_path=chrome_driver_path)
browser = webdriver.Chrome(service=service, options=chrome_options)




#3.使用上个程序收集到的cookie跳过登录
with open('cookie.txt', 'r', encoding='u8') as f:
    cookies = json.load(f)
browser.get("https://tongyi.aliyun.com/qianwen/agent/chat?agentId=A-59195-2e80e42d")
browser.maximize_window()
for cookie in cookies:
    browser.add_cookie(cookie)
browser.get("https://tongyi.aliyun.com/qianwen/agent/chat?agentId=A-59195-2e80e42d")




#4.模拟创建智能体步骤-1
# 定位左下角的【创建智能体】并点击
wait = WebDriverWait(browser, 10)  # 等待最长10秒

# 先等待元素存在,再等待元素可点击
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.footerCreate--O0qBvW7w')))
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.footerCreate--O0qBvW7w')))
element.click()

# 定位新页面左上角的【自由创建】并点击
wait = WebDriverWait(browser, 10)  # 等待最长10秒

# 先等待元素存在,再等待元素可点击
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.iconContainer--sd0RHDOt')))
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.iconContainer--sd0RHDOt')))
element.click()




#5.模拟创建智能体步骤-2
name_input = browser.find_element('id', 'name')
name_input.send_keys('智能体名称')

js_input = browser.find_element('id', 'instructions')
js_input.send_keys("智能体介绍")

jj_input = browser.find_element('id', 'description')
jj_input.send_keys('智能体简介')

kcb_input = browser.find_element('id', 'prologue')
kcb_input.send_keys('智能体开场白')

#添加问题
for i in range(2):
    wait = WebDriverWait(browser, 10)  # 等待最长10秒

    # 先等待元素存在,再等待元素可点击
    element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.btnContainer--yylA8M6B')))
    element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btnContainer--yylA8M6B')))
    element.click()


wt_inputs = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'input.ant-input.css-tqs4ck')))
# 逐个填充值
values = ['问题1', '问题2', '问题3']  # 将这里替换为你要填充的实际值列表
for i in range(len(wt_inputs)-1):
    wt_inputs[i+1].send_keys(values[i])

# 定位右上角的【创建】并点击
wait = WebDriverWait(browser, 10)  # 等待最长10秒

# 先等待元素存在,再等待元素可点击
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.cursor-pointer.whitespace-nowrap.select-none.tongyi-ui-button.tongyi-ui-button-primary.btn--vc8x4xOY')))
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.cursor-pointer.whitespace-nowrap.select-none.tongyi-ui-button.tongyi-ui-button-primary.btn--vc8x4xOY')))
time.sleep(2)
element.click()

将第二个程序里面的变量替换成自己的数据,依次执行即可!

注意:上述代码是临时编写的,很多地方写的不够完美,甚至不够好。

比如:

  • 头像以及知识库文件上传自动化没有做,这两个文件需要手动上传;
  • 模拟点击操作没有封装成方法,造成的代码冗余;
  • 名称、简介、开场白等信息没有做成数组;
  • 等等等等;

希望大家先将就看,大佬们也可以根据我描述的做进一步改进,后续如果我有时间会整理一下再更新到本篇文章中!感谢各位大佬!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值