0

我是一个完全硒新手,所以下面的代码远非完美(支持它不起作用的事实)。我想获取表中的第一行并检查它是否分配了某个 CSS 类。

在多次尝试仅获得第一行之后,到目前为止我一直没有成功。这是我尝试过的 -


我在这里使用 (RemoteWebElement) 演员表的原因是因为 (IWebElement) 演员表不起作用。但这不起作用。

IWebElement first_row = (RemoteWebElement)((IJavaScriptExecutor) Driver).ExecuteScript("return $('#headTable > tr:visible:first')");


下面的行获取所有可见行的文本。这行得通。

IWebElement first_row = Driver.FindElement(By.CssSelector("#headTable"));


再次尝试获得第一行。这不起作用

IWebElement first_row = Driver.FindElement(By.CssSelector("#headTable")).FindElement(By.CssSelector("tr:visible:first"));

我一直在查看来自http://docs.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-selenium-webdriver-api-by-example的示例。但它们是非常简单的示例。

谁能看到这里有什么问题?

此外,如果您有指向其他站点的链接,这些站点在 C# 中有有用的示例,我将不胜感激。谢谢。

4

2 回答 2

0

实际上,BoltClock 是对的,您将 jquery 选择器用于 cssSelector。

WebElement table = Driver.FindElement(By.CssSelector("#headTable")); // you have the table
list<WebElement> allElements = table.findElements(By.CssSelector("tr[attribute name='visible']")); // you have all row that are visible

最后,如果您想获得一排,请执行allElements.get(0)

重要的 :

看一下,By.CssSelector("tr[attribute name ='visible']")因为我刚刚写了[attribute name='visible'],因为我不知道它是如何写入你的代码的,所以你可以适应。

PS:有一些关于cssSelector的规范

于 2013-04-23T07:17:54.897 回答
0

任何时候在 WebDriver 中处理 HTML 表格时,都应该考虑使用 TableDriver 扩展 ( https://github.com/jkindwall/TableDriver.NET )。对于查看表中的第一行是否具有特定 CSS 类的指定问题,您可以这样做:

Table table = Table.Create(driver.FindElement(By.Id("headTable")));
TableRow row = table.FindRow(0);
string rowClasses = row.Element.GetAttribute("class");
Assert.IsTrue(rowClasses.Contains("expected-class"));
于 2021-02-25T22:04:35.100 回答