给定网页上具有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的元素?
答案 0 :(得分:3)
您的案例中的ID包含冒号,它是CSS选择器中的特殊字符(用于表示伪类或伪元素)。因此,选择器被视为input
,#j_idt74
和:addNewTypeBtn
,这当然是不正确的。
您可以使用ID选择器,但需要像这样转义冒号:
@FindBy(how=How.CSS, using="input#j_idt74\\:addNewTypeBtn")
WebElement mAddButton;