CsSelector找不到Id为的元素(selenium Web驱动程序C#)



我使用简单的代码作为

 [FindsBy(How = How.CssSelector, Using = "div[id=1]")]
 private IWebElement _plasticOption;

以查找id为1的元素。

这是针对页面工厂的,如果有人不知道它是什么,我们可以将上面的代码更改为下一个:

 IWebElement element = driver.FindElement(By.CssSelector("div[id=1]"));

因此,这个简单的代码在下一段HTML中找不到元素:

<div class="b-wide-option disabled" data-bind="css: { selected: IsSelected, disabled: !IsVisible() }, click: Select, attr: { id: Id }" id="1"> </div>

但我可以简单地找到下一种方法:

 [FindsBy(How = How.Id, Using = "1")]
 private IWebElement _plasticOption;

实际上,我想知道为什么使用CsSelector找不到这个元素。

我有:

硒网络驱动程序v.2.43.1

chromedriver诉2.10

Chrome Brovser诉37.0.2062.120

[id=1]不是有效的属性选择器。当属性值未加引号时,它将被视为CSS标识符,并且CSS标识符不能以数字开头。出于同样的原因,像div#1这样的选择器将无法工作。

如果您需要查找以数字开头的属性值,则需要引用该值:

[FindsBy(How = How.CssSelector, Using = "div[id='1']")]
private IWebElement _plasticOption;

如果你喜欢使用ID选择器,你需要转义数字(你也可以在属性选择器中这样做,但最好只引用值):

[FindsBy(How = How.CssSelector, Using = "div#\1")]
private IWebElement _plasticOption;

最新更新