You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium VBA自动化wideo文本转语音网站遇元素定位难题

完整自动化解决方案

问题分析

原代码定位失败的核心原因:

  • 目标输入框并非传统input/textarea标签,而是带contenteditable="true"属性的div元素,不存在name="label"属性,因此FindElementByName无法定位。
  • 网站为动态单页应用,元素需等待渲染完成才能操作,直接执行代码会因元素未加载导致定位失败。

完整VBA代码

Sub wideoAutomate()
    Dim obj As New WebDriver
    Dim inputElement As Selenium.WebElement
    Dim generateBtn As Selenium.WebElement
    Dim downloadBtn As Selenium.WebElement
    Dim voiceDropdown As Selenium.WebElement
    
    ' 初始化Edge浏览器,设置自定义下载路径(替换为你的本地路径)
    obj.AddArgument "--download.default_directory=C:\Your\Local\Download\Path"
    obj.Start "edge"
    
    ' 访问目标网站
    obj.Get "https://wideo.co/text-to-speech/"
    
    ' 显式等待输入框加载(最长等待10秒)
    obj.WaitUntil (Timeout:=10, Condition:=Condition.ElementIsVisible(By.CssSelector, "div[contenteditable='true'][placeholder='Type or paste your text here...']"))
    
    ' 定位输入框并输入文本
    Set inputElement = obj.FindElementByCss("div[contenteditable='true'][placeholder='Type or paste your text here...']")
    inputElement.Clear
    inputElement.SendKeys "I Went to College"
    
    ' (可选)选择语音类型:点击下拉框并选第一个选项
    Set voiceDropdown = obj.FindElementByCss("div.Select__Control-sc-17z783z-0")
    voiceDropdown.Click
    obj.WaitUntil (Timeout:=5, Condition:=Condition.ElementIsVisible(By.CssSelector, "div.Select__Option-sc-17z783z-3"))
    obj.FindElementByCss("div.Select__Option-sc-17z783z-3").Click
    
    ' 点击生成语音按钮
    Set generateBtn = obj.FindElementByCss("button.Button__ButtonStyled-sc-1e1g60c-0:nth-child(1)")
    generateBtn.Click
    
    ' 等待生成完成,下载按钮出现(最长等待20秒,可根据文本长度调整)
    obj.WaitUntil (Timeout:=20, Condition:=Condition.ElementIsVisible(By.CssSelector, "a.Button__ButtonStyled-sc-1e1g60c-0:nth-child(2)"))
    
    ' 点击下载按钮
    Set downloadBtn = obj.FindElementByCss("a.Button__ButtonStyled-sc-1e1g60c-0:nth-child(2)")
    downloadBtn.Click
    
    ' 等待下载完成(按需调整等待时长)
    obj.Wait 5
    
    ' 关闭浏览器
    obj.Quit
End Sub

关键注意事项

  1. 元素定位逻辑:使用CSS选择器定位动态元素,避免依赖易变更的ID/name属性,提升代码稳定性。
  2. 显式等待:通过WaitUntil方法等待元素加载完成,替代固定延时,适配不同网络环境下的页面渲染速度。
  3. 环境要求:运行前需确保已正确引用Selenium VBA库,且Edge浏览器驱动版本与本地浏览器版本完全匹配。

内容的提问来源于stack exchange,提问作者satyanarayan mohanty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:02:47