如何使用selenium v ba点击网页上的复选框

问题描述 投票:-1回答:3

我有一个查询,如何使用selenium v​​ba点击网页上的复选框。

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

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>
vba selenium firefox web-scraping
3个回答
2
投票

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

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

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


-1
投票

如果不选择CSS Selector Option,请尝试此操作

bot.Window.Maximize

bot.FindElementByName("locArrVal").Click

bot.Wait 1000
© www.soinside.com 2019 - 2024. All rights reserved.