【问题标题】:How to hook to custom javascript trigger when using IJavaScriptExecutor使用 IJavaScriptExecutor 时如何挂钩到自定义 javascript 触发器
【发布时间】:2017-12-09 11:02:38
【问题描述】:

我们在 Web 应用程序中定义了这个事件,它创建了一个名为 timelineEventClicked 的自定义触发器

canvas.addEventListener('click', function (evt) {
                    evt.stopImmediatePropagation();
                    var mousePos = getMousePos(canvas, evt);

                        ...//some manipulation here

                        $.event.trigger({
                            type: "timelineEventClicked",
                            sender: _timelineObject,
                            events: settings.events,
                            eventData: eventData
                        });
                    });

我想钩到这个事件timelineEventClicked 并通过注入使用硒或量角器取回eventData

IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
 executor.ExecuteScript(@"(function() {                       
                    document.addEventListener('timelineEventClicked', function(e) {
                        //Not sure what to do here to get back evendata
                })();"
                );

问题在于它似乎无法识别事件timelineEventClicked 并且不确定原因。

【问题讨论】:

    标签: javascript c# selenium protractor


    【解决方案1】:

    要检索事件,请将其与侦听器一起存储在全局范围内。 然后点击画布触发事件并返回变量:

    IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
    
    // install the listener
    executor.ExecuteScript(
      "$(document).on('timelineEventClicked', function(e){ window._evt=e; });");
    
    // trigger the event
    driver.FindElement(...).Click();
    
    // return the event
    var data = executor.ExecuteScript(@"return window._evt;");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 2023-02-06
      • 2021-12-07
      • 2022-01-27
      • 1970-01-01
      • 2020-08-18
      • 2021-11-22
      相关资源
      最近更新 更多