Selenium WebDriver Java:在 DOMContentLoaded 之前更改 DOM
Selenium WebDriver Java: Change DOM before DOMContentLoaded
我的目标是在 DOMContentLoaded 事件之前更改页面的 DOM。假设我的 JS 看起来像下面的代码,我想更改元素的值:
document.addEventListener("DOMContentLoaded", function(event) {
console.log("Value of element foo: " + document.getElementById('foo').value);
});
我知道用 Selenium WebDriver 的 JavascriptExecutor
更改 DOM,但我不知道如何让它在 'DOMContentLoaded' 之前执行(也许不是正确的方法)。
// some hook or whatever to execute right before 'DOMContentLoaded' or wherever suitable
((JavascriptExecutor) webDriver).executeScript("document.getElementById('foo').value='hi there'");
为此,您必须将 pageLoadStrategy
从默认值 normal
设置为 none
。
这将在使用 driver.get()
方法启动页面后立即将控件传递给下一个代码行,而无需等待页面内容加载。
我的目标是在 DOMContentLoaded 事件之前更改页面的 DOM。假设我的 JS 看起来像下面的代码,我想更改元素的值:
document.addEventListener("DOMContentLoaded", function(event) {
console.log("Value of element foo: " + document.getElementById('foo').value);
});
我知道用 Selenium WebDriver 的 JavascriptExecutor
更改 DOM,但我不知道如何让它在 'DOMContentLoaded' 之前执行(也许不是正确的方法)。
// some hook or whatever to execute right before 'DOMContentLoaded' or wherever suitable
((JavascriptExecutor) webDriver).executeScript("document.getElementById('foo').value='hi there'");
为此,您必须将 pageLoadStrategy
从默认值 normal
设置为 none
。
这将在使用 driver.get()
方法启动页面后立即将控件传递给下一个代码行,而无需等待页面内容加载。