【问题标题】:Not able to click Button on a confirm box with javascript无法使用javascript单击确认框上的按钮
【发布时间】:2017-12-02 22:03:10
【问题描述】:

我正在构建一个机器人。我得到了这个 html 页面,我点击了一个按钮(type="submit")。当它这样做时,它会弹出一个小窗口,就像一个确认框。我无法查看此确认框的来源,因为它未显示在 html 代码中。但是从 javascript 控制台中,我从消息框中得到了这段代码:

<div class="confirmation-box" id="pop" role="dialog" aria-labelledby="confirmation-msg">
<div><div style="text-align: left"></div>
<div class="confirmation-buttons">
<button class="btn evt-confirm-btn btn-confirm-yes" aria-label'confirmar'="">Confirmar</button>
<button class="btn evt-cancel-btn btn-confirm-no" aria-label'cancelar'="">Cancelar</button>
</div></div></div>

我尝试了几个 javascript 代码,但始终无法单击“确认”按钮。似乎javascript代码在弹出确认框之前运行并且无法识别按钮的ID和Class。

我的代码:

// Clicks the button on the html page, working OK
....{document.forms[0].sell.value = y-x; 
document.querySelector('input[value="Calcular melhor oferta "]').click();  

现在出现一个确认框,我尝试使用下一个代码单击确认框中出现的按钮,但没有成功:

document.getElementById("pop").getElementsByClassName("confirmation-buttons").getElementsByClassName("evt-confirm-btn btn-confirm-yes")[0].click();}

document.getElementsByClassName("evt-confirm-btn")[0].addEventListener("click", function(){console.log("hello");});

document.getElementsByClassName("evt-confirm-btn")[0].click();}

似乎此代码在确认框出现之前运行。

【问题讨论】:

  • 不确定您的 javascript 是如何实现的。如果该对话框是动态构建的,那么您还应该在创建对话框后绑定事件,或者您也可以在父 $('body').on('click', '.btn-confirm-yes', function(){alert();}) 上使用绑定,例如
  • 您是否尝试在代码中模拟点击?从你的问题看不清楚。到目前为止,您尝试了哪些不成功的方法?
  • 编辑主帖。
  • 有一些浏览器扩展可以让你记录你的浏览器操作并将它们转换成不同的格式seleniumhq.org/projects/ide

标签: javascript


【解决方案1】:

我使用以下方法解决它:

var timeOff=1000;
setInterval(time, timeOff);
function time()
{ document.getElementById("pop").getElementsByClassName("evt-confirm-btn btn-confirm-yes")[0].click();}}

这会使代码延迟 1 秒,足以在运行其余代码之前运行小窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多