0

我正在 VBA 中使用 AWS Polly 进行试验,我想将默认文本更改为“嗨!我的名字是 Salli。我会阅读您在此处键入的任何文本。” 到“这是一条测试消息”。然后让 Salli 阅读它。我可以编写代码来更改文本,但 Salli 总是读取相同的默认文本。textarea 框下的剩余字符数计数器也没有更新。

这是我的代码。

Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
'navigate to aws polly site
    With objIE
    .Top = 0
    .Left = 0
    .Width = 800
    .Height = 600
    .Visible = True
End With
objIE.navigate ("https://us-east-2.console.aws.amazon.com/polly/home/SynthesizeSpeech")
    Do
    DoEvents
    If Err.Number <> 0 Then
        objIE.Quit
        Set objIE = Nothing
        GoTo the_start:
    End If

Loop Until objIE.readyState = 4

Dim polly As HTMLDocument
Dim narrative As HTMLLIElement
Dim btnReadText As HTMLButtonElement
Set polly = objIE.document
Set narrative = polly.getElementById("awsui-textarea-0")
Set btnReadText = polly.getElementsByClassName("parrot-player-button full-width-button awsui-button awsui-button-size-normal awsui-button-variant-primary awsui-hover-child-icons")(0)
narrative.Focus
narrative.innerHTML = "This is a new test message."
MsgBox narrative.innerHTML
btnReadText.Click

这个片段执行没有错误,但 Salli 总是说同样的话。

4

1 回答 1

0

我在网上其他地方找到了这个答案。问题是输入更改事件没有被触发。为此,首先将焦点设置在 textarea 上,然后在更改文本后,将焦点更改到其他位置。当焦点改变时,事件触发并且页面检查新输入,计算剩余字符并说出改变的文本。在上面的代码中,更改以下行:

MsgBox narrative.innerHTML

读书

btnReadText.Focus

这将消除消息框并在单击之前将其替换为关注提交按钮。

于 2018-04-28T15:08:36.953 回答