使用VBA和SeleniumBasic

时间:2017-07-11 14:57:17

标签: html vba selenium

我一直在使用SeleniumBasic和VBA自动从我们的数据提供商下载。一切都运行得很好,直到他们改变了下载形式的设计(你为刮掉别人的网站而付出的代价)。

新的下载表单现在有这个小部件: enter image description here

看起来像是"所有"默认情况下会选中,我想通过展开小部件并点击"全部"来确认每次运行我的下载。按钮。

表格行的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以便点击它?
  • 如何找到&#34; All&#34;按钮点击它?
    • 我更喜欢这样做,因为我必须登录不同客户的页面,他们会有不同的选择。

0 个答案:

没有答案