gpt4 book ai didi

javascript - JavaScriptExecutor 中引用 selenium 元素

转载 作者:行者123 更新时间:2023-12-03 04:53:37 24 4
gpt4 key购买 nike

我有一个元素列表,位于 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 来完成此操作。

  • 有没有办法获得对其中每一个的引用,以便我可以单独添加它?
  • 是为每一行提供唯一 ID 然后在 JavaScrit 中使用它的唯一方法吗?

最佳答案

您可以将 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);

关于javascript - JavaScriptExecutor 中引用 selenium 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42537630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com