0

我想做这样的事情;

elem1 = document.getElementById(id1);
elem1.click()
// The page has been changed
elem2 = document.getElementById(id2);
elem2.click()

我的问题是,如果在 document.documentElement 的 HTML 完成更改之前调用第二个“getElementById(id2)”,它有时无法获取 elem2,因为没有具有 id2 的 HTML 元素。(上面代码中的每个 javascript 语句都是从 Selenium Server 之类的 3rd 方发送的,并且有一个 javascript 循环可以获取该语句并逐个运行它。您可以将循环视为 Selenium Core 之类的东西)

我正在尝试编写像 Selenium 或 Watir 这样的工具。所以我不能使用这些工具。我认为 Selenium 或 Watir 有一种方法可以在等待页面因第一个命令而完全更改后发送第二个命令。我尝试了诸如 window.onwebkittransitionend 之类的事件,因为我正在 Webkit 上尝试此操作,但它不起作用。

我不认为 promise 或 async 可以解决这个问题,因为它需要的不仅仅是强制序列。它需要验证第二个页面是否已完全加载,因为第二个命令可以是其他命令,例如获取渲染图像的信息,而不是单击。

是否有任何事件或方法来检查页面更改是否完成?哦,不幸的是我不能使用 jQuery。我需要用纯 Javascript 来做。

感谢您阅读我的问题。

4

0 回答 0