0

我正在使用 selenium 的 RemoteWebDriver 和 c#。现在我正在将一个javascript函数注入一个看起来像这样的页面的头部

"window.__webdriver_javascript_errors = [];
                window.onerror = function(errorMsg, url, line) {
                window.__webdriver_javascript_errors.push(
                    errorMsg + ' (found at ' + url + ', line ' + line + ')');
                };";

它由 fiddler 代理注入,并将页面上的 javascript 错误存储到一个数组中。然后我可以使用 IJavascriptExecuter 来提取这个方法。

然而,我想让javascript在发现错误时自动调用ac#方法,这样我就可以立即记录它。有没有办法做到这一点?

4

1 回答 1

0

由于 WebDriver 在浏览器进程之外独立运行,因此注入的 JavaScript 对自动化进程的语言一无所知。它们从根本上是断开的,这完全是设计使然。您可以在您正在自动化的应用程序的服务器端实现日志记录功能,将错误推送到日志中;或者您可以轮询错误,将它们从页面中拉出。

可能有一些方法可以使您的代码更容易和透明。您可以考虑使用EventFiringWebDriverWebDriver.Support.dll 程序集中的实现。它封装了许多 WebDriver API 调用,在调用方法调用之前和/或之后触发事件。您可以将 JavaScript 日志检查放在这些事件的事件处理程序中,这对您的测试代码是透明的。如果当前的实现不能满足您的需求,您可以将该实现用作适合您的实现的模板。

于 2013-11-11T16:59:17.997 回答