在添加新DOM元素的按钮上使用.click()之后,继续执行javascript

时间:2019-01-18 23:24:21

标签: javascript html

我是一名运营低下的员工,未经授权可以更改计算机上的程序和权限,因此我想自动执行一些重复性很高的数据输入。我知道有很多程序可以做到这一点,但是,为了便于讨论,我们假设我不允许其中的任何一个,而我只能通过Chrome中的debug F12菜单编写脚本。我可能还不太了解这些单词。

我必须在第三方供应商的高度动态的网站上运行测试用例,并且我已经成功编写了JavaScript,该JavaScript将文本添加到DOM中的元素并按下“下一步”按钮。

问题是.click()按下“下一步”按钮后,页面需要花费一些时间来更新,并且更新会在以下情况下创建不在DOM中的新元素:脚本已初始化。我需要找到一种方法来延迟脚本的执行,直到DOM包含我需要更新的所有元素为止。

作为一个非常原始的概念证明,我为每个页面编写了预填充函数,然后在上一个函数的末尾依次调用每个函数,并使用setTimeout(nextfunct, 10000)来使页面更新在执行下一行之前。 (我打算通过尝试创建某种对象侦听器(而不是任意的10秒延迟)来完善这一点,但我什至无法做到这一点。)这种方法会产生两个错误。

1)该脚本似乎正在检查元素setTimeout()之前是否在DOM上,因此仍然给我一个错误。如果nextfunct被定义为

document.getElementById("doesntexistyet").value = "Fill Me";
console.log("nextfunct ran");

我将收到错误消息,指出没有ID为"doesntexistyet“的元素,而不是立即延迟10秒之后。下一页的元素将不会更新。

2)DOM更新中断了我的脚本。在上面的代码中,控制台输出永远不会出现在我的控制台中。如果我注释掉丢失的元素,则该功能仅打印注释,它仍不会出现在控制台中。但是,如果我注释掉代码并将setTimeout切换为1ms,则"nextfunct ran"将出现在控制台中,直到页面更新为止,此时控制台将被删除。

有没有可以仅使用Vanilla JS和浏览器实现的方法?我敢肯定有一个关键字可以搜索到有人在此之前讨论过的地方,但是似乎绝大多数JS自动填充讨论都是针对人们设计要集成到网站中的代码的,

谢谢

0 个答案:

没有答案