我正在编写代码以在C#中使用Selenium测试网页,并且需要单击带有动态生成的参数的复选框。这是html的代码段:
<input type="checkbox" value="2948" onclick="locBoxOnClick(this, 0);" name="locCombo2948">
<label for="locCombo2948">
AL
<br>
</label>
我可以使用XPath找到标签,但是当我尝试实际单击该框时,什么也没发生。
代码:
By.XPath("(//*[contains(text(), '" + appDto.StatePicker_SpecificCheckbox + "')])").Click();
编辑:最后使用某种贫民窟的方法解决了它,但它的工作原理是:
By.XPath(".//label[contains(text(), '" + appDto.StatePicker_SpecificCheckbox + "')]/../input")
基本上,您会找到标签,转到父节点,然后转到其输入子节点。希望这对其他人有帮助!
实际上您使用的是错误的xpath
,提供xpath
的label
元素是loc,而您需要input
使用label
,因此您应该尝试使用xpath下方的标签文本来选中复选框:
appDto.StatePicker_SpecificCheckbox = "AL"
By.XPath(".//input[following-sibling::label[contains(., '" + appDto.StatePicker_SpecificCheckbox + "')]]").Click();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句