我正在自动化任务(填写表单并提交数据,然后从文本文件逐行读取数据的结果消息)。在通过控制台运行我的JS代码时,直到点击提交按钮之前,一切都工作正常。点击提交按钮后,我可以看到HTML正在重新加载新数据,URL从www.example.com
更改为www.example.com/requests/12345
,然后点击后的下一步不受尊重。
我想可能是因为我使用了:
document.getElementByID("btn-submit").click();
改成
$("#btn-submit").click().trigger('change');
但还是一样的问题。
我尝试使用sleep函数和setTimeout来等待新的HTML加载,但这根本没有帮助:(
任务是简单的步骤,直到按钮单击所有工作完美,我只在提交按钮后卡住,因为我想获得点击提交按钮后显示在页面上的结果。
有什么想法是我做错了吗?
我试图得到的元素是在div
是空的提交按钮被点击之前,像这样
<div id="message-bar">
</div>
提交按钮被点击后,它被填充如下(URL也被更改为链接www.example.com/requests/12345
-当然,结果元素不会显示,如果按钮不被点击:
<div id="message-bar">
<div id="alert-success" class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<div class="text alert-text">Request approved!</div>
<ul id="bullet-items"><li>Thank you</li></ul>
</div>
</div>
我试图检查元素是否为空,然后得到元素innerText,但似乎我的代码被删除时,页面URL更改后提交按钮:
if (document.getElementById("message-bar").innerText != "") {
// do something
}
Thank you so much
Try
$("#btn-submit").click(function(event){
event.preventDefault();
})
或不使用jQuery
var btn = document.getElementById('btn-submit');
btn.addEventListener('click',function(event){
event.preventDefault();
})
尝试使用。preventdefault()事件
https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)。
据我所知,您需要的内容不是点击之后,而是点击触发之后。这是同一个Q,回答说。基本上,你等待mod发生,然后"读取"元素内容。
为了解决我的问题,我想到使用window.open("URL")通过为它创建一个变量,然后使用它来处理我在新窗口上的整个自动化过程,我能够从新窗口
获得所有结果消息var newWindow = window.open("the URL");
newWindow.$('input[id="input"]').val("1234").trigger('change');
etc...