2
因此,我发现如何使用JQuery查找东西并将其传回Selenium C#中,但我得到它的工作,所以我认为我会分享我发现的内容。Selenium将dom元素传递给JQuery,并将结果返回到C#
特别是:
- 如何从C#IWebElements传递给JQuery的?
- 如何从javascipt的结果中将对象数组返回到C#中?
因此,我发现如何使用JQuery查找东西并将其传回Selenium C#中,但我得到它的工作,所以我认为我会分享我发现的内容。Selenium将dom元素传递给JQuery,并将结果返回到C#
特别是:
回答我的问题在这里:)
你可以通过webElements的JavaScript,并通过arguments
访问它们。
要将结果返回到C#,必须将其转换为<IReadOnlyCollection<IWebElement>>
。对于单个元素,只需使用IWebElement
。多重结果的一个诀窍是你必须在JQuery结果上调用toArray
,以便它返回一个真数组而不是一个对象。
var singleResult = Driver.ExecuteJavaScript<IWebElement>(
"return $('.my-class')[0]");
IWebElement elementToPass = Driver.FindElement(By.Id("cool-id"));
var results = Driver.ExecuteJavaScript<IReadOnlyCollection<IWebElement>>(
"return $(arguments[0]).children('.my-class').toArray()", elementToPass);