gpt4 book ai didi

javascript - 使用 IJavaScriptExecutor 时如何 Hook 自定义 javascript 触发器

转载 作者:行者123 更新时间:2023-12-03 03:56:15 32 4
gpt4 key购买 nike

我们在 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
});
});

我想 Hook 此事件 timelineEventClicked 并通过注入(inject)使用 selenium 或 Protractor 取回 eventData

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

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

最佳答案

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

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;");

关于javascript - 使用 IJavaScriptExecutor 时如何 Hook 自定义 javascript 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44931951/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com