我正试图用DEEPL.com编写一个函数来翻译Excel中的句子,我的方法是使用Selenium来使用Chrome刮取网页(因为IExplore不受web支持)。
Public Function deepL(txt As String, inputLang As String, outputLang As String)
Dim url As String
Dim driver As New WebDriver
url = "https://www.deepl.com/translator#" & inputLang & "/" & outputLang & "/" & txt
driver.Start "Chrome"
driver.Timeouts.ImplicitWait = 5000
driver.Get url
deepL = driver.FindElementById("target-dummydiv").Text
driver.Close
End Function
----
Sub translating()
'test for word "probando" from "es" to "en"
'url: https://www.deepl.com/translator#es/en/probando
'it should return: "testing"
MsgBox (deepL("probando", "es", "en"))
End Sub这个问题是在加载web时出现的,因此包含翻译的div在加载时为空,GET指令返回一个空文本。但是,1秒后,页面将刷新正确的结果:
<div id="target-dummydiv" aria-hidden="true" class="lmt__textarea lmt__textarea_dummydiv" lang="en-US">testing</div>我尝试添加一个5秒的隐式等待,以便给网页加载时间,但结果是一样的。
我做错了什么?
编辑:我发现带有翻译的div具有可见性:隐藏。如果我显示了可见性,结果是正确的,但不知道如何在我的代码中得到它
发布于 2022-08-17 09:12:24
好吧,我找到了一个解决方案:
只需选择翻译所在的文本区域,并使用.attribute("value")而不是.text获得翻译
deepL = driver.FindElementByCss("textarea.lmt__textarea.lmt__target_textarea.lmt__textarea_base_style").Attribute("value")https://stackoverflow.com/questions/73384896
复制相似问题