我有一个查询,如何使用硒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>
答案 0 :(得分:2)
您可以在下面使用xpath来获取复选框,这意味着:查找带有type =“ checkbox”的输入和带有文本“ Nerul”的父SPAN。
driver.FindElementByXPath("//input[ancestor::span[normalize-space(.)='Nerul'] and @type='checkbox']").Click
答案 1 :(得分:1)
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。
答案 2 :(得分:-1)
如果不可以,请尝试使用CSS选择器选项
bot.Window.Maximize
bot.FindElementByName("locArrVal").Click
bot.Wait 1000