如何通过VBScript和Selenium按照html点击元素



我正在使用带有Selenium驱动程序的VbScript连接到Chrome(store.streamppowered.com/app/681530/NOISZ/(,并希望单击"队列中的下一个"按钮,这是一个div类,但什么也没发生。我知道我走在了正确的轨道上,因为下面的线路确实如预期的那样工作:

(显示队列中的下一个文本(

msgbox(driver.FindElementsByXPath("//div[@class='next_in_queue_area']/div[@class='btn_next_in_queue btn_next_in_queue_trigger']").Item(1).text)

(滚动到队列中的下一个按钮(

driver.FindElementsByXPath("//div[@class='next_in_queue_area']").Item(1).ScrollIntoView

(但尝试这些操作没有任何作用,也没有错误消息(

driver.FindElementsByXPath("//div[@class='queue_actions_ctn']").Item(1).Click
driver.FindElementsByClass("next_in_queue_content").Item(1).Click

当高亮显示此代码时,使用Chrome的Inspect,"下一步"按钮将完全高亮显示:

<div class="btn_next_in_queue btn_next_in_queue_trigger" data-tooltip-text="Remove this product from your queue and continue to the next item.">
<div class="next_in_queue_content">
                  <span>Next in Queue<br>
<span class="queue_sub_text">(11 remaining )</span>
</span>
          </div>
</div>

因此,这只是一个找到正确div或span来点击的问题

要在队列中单击文本为下一步的按钮,可以使用以下任一解决方案:

  • FindElementXPath:

    driver.FindElementByXPath("//div[@class='btn_next_in_queue btn_next_in_queue_trigger']/div[@class='next_in_queue_content']/span").Click
    
  • FindElementsXPath:

    driver.FindElementsByXPath("//div[@class='btn_next_in_queue btn_next_in_queue_trigger']/div[@class='next_in_queue_content']/span").Item(1).Click
    

作为一种替代方案,您可以使用ExecuteScript()方法,如下所示:

Dim js As IJavaScriptExecutor = TryCast(driver, IJavaScriptExecutor)
js.ExecuteScript("arguments[0].click();", driver.find_element_by_xpath("//span[starts-with(@id, 'button-')][@class='x-btn-inner x-btn-inner-center']"))

Imports OpenQA.Selenium.Support.Extensions
driver.ExecuteJavaScript("arguments[0].click();", driver.find_element_by_xpath("//span[starts-with(@id, 'button-')][@class='x-btn-inner x-btn-inner-center']"))

最新更新