运行我的脚本后,我遇到了与selenium在vba中的元素不可见错误。这是我尝试的代码:
Sub Table_stuff()
Dim driver As New WebDriver
With driver
.Start "chrome", "http://apps.tga.gov.au/Prod/devices"
.get "/daen-entry.aspx"
.Timeouts.PageLoad = 20000
.FindElementById("disclaimer-accept").Click
.Timeouts.PageLoad = 20000
.FindElementById("medicine-name").SendKeys ("pump") ''Error thrown here
.FindElementById("medicines-header-text").Click
.FindElementById("submit-button").Click
.Timeouts.PageLoad = 20000
End With
End Sub
这是我的刮刀抛出特定错误的元素:
<input type="text" name="medicine-name" id="medicine-name" value=""
placeholder="Type at least 3 characters" title="Enter medical device name"
autocomplete="off" maxlength="100" class="placeholder" style="color: rgb(0, 0, 0);">
答案 0 :(得分:2)
根据我的理解Timeouts.PageLoad
调用实际上不会触发selenium驱动程序等待 - 我认为它只是设置页面加载超时。这意味着您的代码会在打开的许可证对话框时尝试将密钥发送到搜索输入 - 这会触发“元素不可见”错误。
您需要的是Wait
调用(最好是显式等待,但我不确定VBA绑定是否具有该功能):
.Wait 3000 ''3 seconds