我正在使用带有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来点击的问题
要在队列中单击文本为下一步的按钮,可以使用以下任一解决方案:
-
FindElement
与XPath
:driver.FindElementByXPath("//div[@class='btn_next_in_queue btn_next_in_queue_trigger']/div[@class='next_in_queue_content']/span").Click
-
FindElements
与XPath
: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']"))