如何使用硒VBA单击网页上的复选框

时间:2018-08-27 09:07:18

标签: vba selenium firefox web-scraping

我有一个查询,如何使用硒vba单击网页上的复选框。

下面是我要单击的屏幕截图

enter image description here

下面是html代码。

<span name="locSpans[]" value="Nerul" style="display:block">
<input type="checkbox" name="locArr[]" value="8897" onclick="enableDisableLocality(); showSelectedLoc();">Nerul
<br>
<input type="hidden" name="locArrVal[]" disabled="disabled" value="Nerul">
</span>

3 个答案:

答案 0 :(得分:2)

您可以在下面使用xpath来获取复选框,这意味着:查找带有type =“ checkbox”的输入和带有文本“ Nerul”的父SPAN。

driver.FindElementByXPath("//input[ancestor::span[normalize-space(.)='Nerul'] and @type='checkbox']").Click

答案 1 :(得分:1)

除非使用IE,否则

FindElementByCss通常会更快,然后它取决于IE的版本和所需的遍历类型。

重复测试证明FindElementByCssFindElementByXPath的性能更高(请注意:如果存在唯一的ID,那么按ID选择始终是首选!)

benchmarked tests ChromeFireFox中,在不同的遍历路径上一致地使用CSS进行了更快的匹配。考虑到CSS对其进行了优化,并提倡使用CSS选择器selenium best practiceIE的可变性更大,大多数XPath实例的性能稍高,但是有一些明确的路径支持CSS的选择。长的XPath选择器很昂贵,而且容易损坏。 IE的更高版本具有更多的可变性。 Opera12浏览器出现了混合结果。


我将使用CSS选择器:

因此,对于基于可能唯一属性的简单选择,我将使用[value='8897']属性CSS选择器来定位value属性。 []表示属性选择器。因此,value属性的值为8897

driver.FindElementByCss("[value='8897']").Click

如果您希望更具选择性,可以添加一个附加的属性选择器,如下所示,以type属性为目标。

driver.FindElementByCss("[type=checkbox][value='8897']").Click

那么我什么时候应该使用XPath?

肯定是较旧的IE版本。

对DOM的任何需求都将指向XPath的使用。

XPath还有一些很棒的附加定位器策略,可用于难以找到元素,但是这里不需要AFAIK。您可以看到一些其他注意事项here

答案 2 :(得分:-1)

如果不可以,请尝试使用CSS选择器选项

bot.Window.Maximize

bot.FindElementByName("locArrVal").Click

bot.Wait 1000