我们有一个在线时间表,需要填写每个付款期。我正在创建可自动完成所有操作的Chrome扩展程序。
该代码基本上获取页面上的元素,然后单击按钮并填写输入字段。每天都有一个与之关联的按钮,它会打开一个对话框小部件,您可以在其中输入小时数。这是小部件的html。
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-dialog-buttons ui-draggable ui-resizable" tabindex="-1" role="dialog" aria-describedby="editDialog" aria-labelledby="ui-id-21" style="position: absolute; height: auto; width: 750px; top: 191px; left: 372px; display: block; z-index: 101;">
我在代码中添加了中断,它打开了每一天的小部件,输入了小时,然后单击“接受并关闭”按钮。
但是,在完成所有操作之后,每天的时间都会显示在最后一天。因此,如果我在工资期的最后一天工作是星期五,则所有10天工作时间都在最后一个星期五。而且,即使我添加代码来等待,您也不会真正看到该小部件弹出。
我对此很陌生,我猜想我很想念一些东西。
下面是完成工作的代码...
for (var i = 0; i < message.Checks.length; i++) {
try {
var elt = new cb(message.Checks[i].id, message.Checks[i].check, message.Checks[i].week, message.Checks[i].pos);
if (elt.check == true) {
console.log(`#week${elt.week} > div > div > div.timesheet-title-siblings > div:nth-child(${elt.id}) > div.timesheet-items > div > div.actions > button > span.ui-button-icon-primary.ui-icon.ui-icon-plus`);
var plus = document.querySelector(`#week${elt.week} > div > div > div.timesheet-title-siblings > div:nth-child(${elt.pos}) > div.timesheet-items > div > div.actions > button > span.ui-button-icon-primary.ui-icon.ui-icon-plus`);
plus.click();
var fromTime = document.querySelector("#itemStartTime");
var toTime = document.querySelector("#itemEndTime");
var ws = document.querySelector("#itemWorkStatus");
var activity = document.querySelector("#itemActivity");
var tCode = document.querySelector("#itemTransactionCode");
// var subAct = $("#itemSubactivity");
var assign = document.querySelector("#itemAssignment");
var accButt = document.querySelector("body > div:nth-child(9) > div.ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix > div > button.add.ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-text-only > span");
var acClose = document.querySelector("body > div:nth-child(9) > div.ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix > div > button.accept.ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-text-only > span");
fromTime.value = message.MainFrom;
toTime.value = message.MainTo;
ws.value = "WK";
activity.value = "INTAS";
assign.value = "10572";
if (elt.pos == 1) {
tCode.value = 4;
} else {
tCode.value = 1;
}
accButt.click();
fromTime.value = message.OTBFrom;
toTime.value = message.OTBTo;
ws.value = "OTB";
activity.value = "INTAS";
// subAct[0].value = "LINE";
assign.value = "80888";
tCode.value = 61;
acClose.click();
}
} catch (err) {
console.log(err);
}