繁体   English   中英

为什么我不能使用带有'#'符号的标准CSS注释来使用@FindBy注释来获取Selenium Webdriver上具有ID的元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM