所以我在查找如何使用JQuery查找内容并将其传递给Selenium C#时遇到了一些麻烦,但我确实让它工作了,所以我想我会分享我发现的东西.
特别是:
>如何将IWebElements从C#传递给JQuery?
>如何从javascipt的结果中将一个对象数组返回到C#中?
解决方法:
在这里回答我自己的问题:)
您可以将webElements传递给javascript并通过参数访问它们.
要将结果返回到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);