我有一个查询,如何使用selenium vba点击网页上的复选框。
下面是我要点击的屏幕截图
下面是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>
您可以使用下面的xpath获取复选框,这意味着:找到type =“checkbox”的输入和带有文本“Nerul”的父SPAN。
driver.FindElementByXPath("//input[ancestor::span[normalize-space(.)='Nerul'] and @type='checkbox']").Click
除非使用IE,否则FindElementByCss
通常更快,然后它取决于哪个版本的IE以及需要什么类型的遍历。
重复测试证明FindElementByCss
比FindElementByXPath
更具性能(注意:如果存在唯一的id,那么通过id选择始终是第一选择!)
在benchmarked tests中,Chrome
和FireFox
在不同的遍历路径中使用CSS一致地看到了更快的匹配。它们在使用CSS时进行了优化,并且使用CSS选择器被提倡为selenium best practice。 IE
变化较大,大多数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。
如果不选择CSS Selector Option,请尝试此操作
bot.Window.Maximize
bot.FindElementByName("locArrVal").Click
bot.Wait 1000