Selenium将dom元素传递给JQuery并将结果返回到C#

fro*_*975 3 javascript c# jquery selenium

因此,在查找如何使用JQuery查找内容并将其传递回Selenium C#时遇到了一些麻烦,但是我使它起作用了,所以我想分享一下我发现的内容。

特别是:

  • 如何将IWebElements从C#传递到JQuery?
  • 如何从javascipt的结果中将对象数组返回到C#中?

fro*_*975 5

在这里回答我自己的问题:)

您可以将webElement传递给javascript并通过进行访问arguments

要将结果返回到C#中,您必须转换为<IReadOnlyCollection<IWebElement>>。对于单个元素,只需使用IWebElement。多个结果的一个技巧是必须调用toArrayJQuery结果,以便它返回一个真实的数组而不是一个对象。

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);
Run Code Online (Sandbox Code Playgroud)