我正在使用Selenium WebDriver进行自动化,我正在获取表格的所有元素。
我使用了以下代码:
var qntd= driver.FindElements(By.XPath("//*[@id='dataTable']/tbody/tr")).Skip(3);
然后我意识到每个元素都生成了一个不属于Id的Id,如Html
所示我尝试使用查询检索此ID,但我不能,因为返回的是HTML Id属性
var query = from a in qntd
select a.GetAttribute("Id");
此ID来自何处以及如何检索它?
答案 0 :(得分:1)
很遗憾,您无法访问此字段,因为方法" FindElements"以IWebElement的形式返回元素。 IWebElement没有实现方法来获取您正在寻找的ID值。
如果FindElements方法要返回类型RemoteWebElement,甚至ChromeWebElement,我们将能够访问此字段,因为RemoteWebElement有一个访问它的方法。但是,此方法未在接口中实现。所以我们没办法得到它。我已经玩过铸造,并且避风港能够在正确的位置施放。截至目前,我还没有找到获取此ID的方法。
有关详细信息,请参阅RemoteWebElement.cs源代码: https://github.com/SeleniumHQ/selenium/blob/master/dotnet/src/webdriver/Remote/RemoteWebElement.cs
希望这有点帮助你
答案 1 :(得分:0)
如果您希望将所有元素的ID作为List<String>
来获取
List<String> query = qntd.Select(it => it.Id).ToList();
答案 2 :(得分:0)
这是驱动程序本身生成的特殊ID,而不是html属性。您可以将类型强制转换为RemoteWebElement,然后使用反射来获取此值,因为它受到保护。但这几乎不是您测试中需要的东西。