簡體   English   中英

CssSelector無法通過ID查找元素(Selenium Webdriver C#)

[英]CssSelector cannot find element by Id (selenium webdriver 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;

我實際上想知道為什么我無法使用CssSelector找到該元素。

我有:

硒webdriver v.2.43.1

chromedriver v。2.10

Chrome Brovser v.37.0.2062.120

[id=1]不是有效的屬性選擇器。 如果屬性值未加引號,則將其視為CSS標識符,並且CSS標識符不能以digit開頭 出於同樣的原因,像div#1這樣的選擇器將不起作用。

如果需要查找以數字開頭的屬性值,則需要引用該值:

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

如果您更喜歡使用ID選擇器,則需要對數字進行轉義(您也可以在屬性選擇器中執行此操作,但是最好只引用該值):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM