⏱️
SeleniumでinnerHTMLやouterHTMLを取得したい場合はページロードを待たないといけない
stale element reference: element is not attached to the page document (Session info: headless chrome=96.0.4664.93)
結論
document.readyStateがcompleteになるまで待機する
Javaの例
void waitForLoad(WebDriver driver) {
new WebDriverWait(driver, Duration.ofSeconds(30)).until((ExpectedCondition<Boolean>) wd ->
((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));
}
PHPの例
$to->getDriver()->wait()->until(function () use(&$to){
return $to->getDriver()->executeScript('return document.readyState') === 'complete';
});
getAttribute経由でinnnerHTMLは各言語によって実装が異なるため推奨しません。
//deprecated
elem.getAttribute("innerHTML");
参考
Discussion