我正在尝试编写一个脚本,可以为this site的多个邮政编码生成保险报价。到目前为止,我已成功将数据输入对话框。手动输入包括:点击邮政编码字段,打开一个对话框,输入邮政编码,然后点击“继续”。
到目前为止,我的脚本看起来像这样:
document.querySelector('.btn.btn-default.postal-code').click();
window.setTimeout(function() {
document.getElementById("PostalCode").value = "K0A1B0";
}, 2000);
window.setTimeout(function() {
document.querySelector('.btn.btn-orange.validate-postal-code').click();
}, 2000);
如果我执行前两行,则会打开对话框并正确输入邮政编码。
如果我执行所有操作,邮政编码似乎没有改变,但对话框关闭了。但是,该值不会保存在主页面的字段中。我做错了什么?
我已经做了一些搜索并尝试在结束前提交表单,但我真的不知道我需要在这里做什么。这些都没有奏效:
document.forms[0].submit();
document.getElementById("PostalCode").submit();
答案 0 :(得分:0)
当您使用setTimeout
时,它会在您指定的时间安排执行,然后继续执行下一行。在您的情况下,两个setTimeout
行中的代码将在2秒后几乎同时执行。您可以使用4秒作为第二个:
document.querySelector('.btn.btn-default.postal-code').click();
window.setTimeout(function() {
document.getElementById("PostalCode").value = "K0A1B0";
}, 2000);
window.setTimeout(function(){
document.querySelector('.btn.btn-orange.validate-postal-code').click();
}, 4000);
或者,您可以在第一个内部调用第二个,在这种情况下,第一个将在2秒后执行,并将安排第二个在2秒后执行:
document.querySelector('.btn.btn-default.postal-code').click();
window.setTimeout(function() {
document.getElementById("PostalCode").value = "K0A1B0";
window.setTimeout(function() {
document.querySelector('.btn.btn-orange.validate-postal-code').click();
}, 2000);
}, 2000);
编辑当触发键盘事件时,该值将被验证并复制到主页面。你可以在JavaScript中模拟它,但是因为网站使用它,所以在jQuery中更容易实现。更改值后添加trigger("change")
,您将看到验证的邮政编码并将其复制到主页上的框中:
document.querySelector('.btn.btn-default.postal-code').click();
window.setTimeout(function() {
$("#PostalCode").val("K1A1B0").trigger("change");
}, 2000);
window.setTimeout(function() {
document.querySelector('.btn.btn-orange.validate-postal-code').click();
}, 4000);
注意:如果您在上面的代码中使用了无效的邮政编码,则该值将会更改并被复制,但您将看到验证消息,并且弹出窗口将保持打开状态。如果要手动验证邮政编码,请调用ValidatePostalCode()
功能。它会返回true
或false
,并根据您可以决定下一步该做什么。
答案 1 :(得分:0)
这可能是因为您正在设置值
window.setTimeout(function(){document.getElementById(“PostalCode”)。value =“K0A1B0”;},2000);
并在同一时刻提交......这就是问题所在。
window.setTimeout(function(){document.querySelector('。btn.btn-orange.validate-postal-code')。click();},2000);
var execute = function () {
'use-strict';
document.querySelector('.btn.btn-default.postal-code').click();
window.setTimeout(function(){document.getElementById("PostalCode").value = "K0A1B0";}, 2000);
window.setTimeout(function(){document.querySelector('.btn.btn-orange.validate-postal-code').click();}, 3000);
}();