繁体   English   中英

从JavaScript调用C#中的方法

[英]Calling a method in c# from javascript

我正在使用硒的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#方法,以便我可以立即将其记录下来。 有没有办法做到这一点?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM