[英]Why can't I use the standard CSS annotation using the '#' symbol to grab elements with IDs on Selenium Webdriver, using the @FindBy annotation?
给定网页上具有ID的元素:
id="j_idt74:addNewTypeBtn"
我正在使用“ @findBy”注释方式来捕获网页元素。
使用方法:
@FindBy(how=How.CSS, using="input#j_idt74:addNewTypeBtn")
WebElement mAddButton;
给出一个错误:'给定的选择器输入#j_idt74:addNewTypeBtn无效或未生成WebElement。 发生以下错误:InvalidSelectorError:指定了无效或非法的选择器'
但是,如果我使用ID作为属性符号,例如:
@FindBy(how=How.CSS, using="input[id=\"j_idt74:addNewTypeBtn\"]")
WebElement mAddButton;
它正常工作。
为什么不能使用标准的CSS表示法(使用#号)来捕获具有ID的元素?
您所使用的ID包含一个冒号,冒号是CSS选择器中的特殊字符(用于表示伪类或伪元素)。 因此,选择器被视为input
, #j_idt74
和:addNewTypeBtn
,这当然是不正确的。
您可以使用ID选择器,但需要像这样对冒号进行转义:
@FindBy(how=How.CSS, using="input#j_idt74\\:addNewTypeBtn")
WebElement mAddButton;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.