画布程序化点击突然被忽略

这是问题所在:

直到最近,我的WebDriverChromeDriver)网络机器人之一在HTML <canvas>元素内呈现的网络游戏上都可以正常工作,但突然停止了工作。我尝试以编程方式单击该元素,但WebDriver API或浏览器控制台中未报告任何错误-它将被忽略。

我遇到问题的画布具有以下结构:

<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" height="640px" width="1120px"></canvas>

方法非常简单,单击具有给定(x,y)偏移量的HTML元素:

JavaScript版本:

function clickOnElem(elem,offsetX,offsetY) {
    var rect = elem.getBoundingClientRect(),       posX = rect.left,posY = rect.top; // get elems coordinates
    // calculate position of click
    if (typeof offsetX == 'number') posX += offsetX;
    else if (offsetX == 'center') {
        posX += rect.width / 2;
        if (offsetY == null) posY += rect.height / 2;
    }
    if (typeof offsetY == 'number') posY += offsetY;
    // create event-object with calculated position
    var evt = new MouseEvent('click',{bubbles: true,clientX: posX,clientY: posY});    
    elem.dispatchEvent(evt); // trigger the event on elem
}

调用:

var el = document.getElementById("myElem");
clickOnElem(el,30,40);

Webdriver版本(科林语言):

actions(webDriver).moveToElement(element,offsetY).click().perform()

Javascript和WebDriver版本基本上都具有相同的作用,并且它们在我的其他canvas机器人的正常条件下都可以工作,但是对于这种特定的bot而言,它不再可用。

当我用鼠标在画布上单击时,会触发单击(单击动画),但是当我以编程方式进行操作时,则没有任何反应。

我发现了这种情况的可能答案,即开发人员可能会检查click事件的属性isTrusted是否为真。 如果单击是由人为操作,则为true;如果以编程方式调用,则为false。


问题:是否有人还有其他可能的答案,处于这种情况下或有任何解决方案/解决方法?

z81452418 回答:画布程序化点击突然被忽略

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3156564.html

大家都在问