为什么我不能使用使用“#”符号的标准 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 选择器中的一个特殊字符(用于表示伪 class 或伪元素)。因此,选择器被视为 input
、#j_idt74
和 :addNewTypeBtn
,这当然是不正确的。
您可以使用 ID 选择器,但您需要像这样转义冒号:
@FindBy(how=How.CSS, using="input#j_idt74\:addNewTypeBtn")
WebElement mAddButton;
给定网页上的一个元素,其 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 选择器中的一个特殊字符(用于表示伪 class 或伪元素)。因此,选择器被视为 input
、#j_idt74
和 :addNewTypeBtn
,这当然是不正确的。
您可以使用 ID 选择器,但您需要像这样转义冒号:
@FindBy(how=How.CSS, using="input#j_idt74\:addNewTypeBtn")
WebElement mAddButton;