我一直在使用SeleniumBasic和VBA自动从我们的数据提供商下载。一切都运行得很好,直到他们改变了下载形式的设计(你为刮掉别人的网站而付出的代价)。
看起来像是"所有"默认情况下会选中,我想通过展开小部件并点击"全部"来确认每次运行我的下载。按钮。
表格行的HTML是:
<tr>
<td class="table_text1" width="2%" nowrap="" valign="top">Appointment Status </td>
<td id="apt_status_td">
<select id="apt_status" name="apt_status[]" multiple="multiple" class="filterSelections" style="display: none; visibility: visible;">
<option value="2870" selected="" aria-selected="true">Scheduled</option>
<option value="2871" selected="" aria-selected="true">Confirmed</option>
<option value="2872" selected="" aria-selected="true">Complete</option>
<option value="2873" selected="" aria-selected="true">Rescheduled</option>
<option value="4107" selected="" aria-selected="true">Same Day Cancellation</option>
<option value="2874" selected="" aria-selected="true">Cancelled</option>
<option value="2875" selected="" aria-selected="true">No Show</option>
</select>
<button type="button" class="ui-multiselect ui-widget ui-state-default ui-corner-all" aria-haspopup="true" tabindex="0" style="width: 263px;">
<span class="ui-icon ui-icon-triangle-2-n-s"></span>
<span>7 of 7 selected</span>
</button>
</td>
</tr>
我可以用这个来识别小部件:
Dim el As Selenium.WebElement
text = "apt_status"
With this.Driver
Set el = .FindElementById(text)
但是
el.Click
给我一个错误#11:
ElementNotVisibleError
元素不可见
(会议信息:chrome = 59.0.3071.115)
(驱动程序信息:chromedriver = 2.29.461591( - 一串十六进制 - ),平台= Windows NT 6.1.7601 SP1 x86_64)
当我尝试这两个时,我得到了相同的ElementNotVisibleError
:
Set el = .FindElementByClass("ui-corner-all")
Set el = .FindElementByClass("ui-multiselect-all")
就在发布之前,我也尝试过这样做:
text = "apt_status"
Dim els As WebElements
With this.Driver
Set els = .FindElementsById(text)
For Each el In els
el.AsSelect.SelectByIndex (2870)
Next
但产生错误代码7:
NoSuchElementError
无法找到索引选项:2870
在el.AsSelect.SelectByIndex (2870)
所以,在我看来,我在点击下拉菜单的正确轨道上,但是
Visible
以便点击它?