我有一个元素列表,位于Selenium中,使用By.CssSelector
方法:
var contentRows = new List<TableRow>();
for (var i = 1; i < PositiveInfinity; i++)
{
var cssSelectorToFind = $"tbody > tr:nth-child({i})";
var bySelector = By.CssSelector(cssSelectorToFind);
var rowElement = WebElement.FindElements(bySelector).ToArray();
if (rowElement.Length == 1)
{
var description = $"{Description} Content row: {i}. Selected by: {bySelector}.";
var tableRow = new TableRow(bySelector, WebDriver, description, Headers);
contentRows.Add(tableRow);
}
else
{
if (rowElement.Length == 0)
{
break;
}
else
{
throw new InvalidOperationException($"The selector {bySelector} returned more that one row at the same ordinal position. Should be impossible... Best look at the selector and the HTML.");
}
}
}
return contentRows;
对于这些行中的每一行,我需要在selected
的HTML中设置一个类。
我知道我必须使用JavaScriptExecutor
执行此操作。
答案 0 :(得分:1)
您可以将IWebElement
引用作为参数传递给ExecuteScript
,然后使用JavaScript中的参数,如果这是您正在寻找的内容。例如,如果您有一个IWebElement
并希望通过在其周围绘制红色边框来突出显示它,则可以使用以下代码执行此操作(基于the answers to this question:
var element = driver.FindElement(By.Name("..."));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].style.border='3px solid red'", element);