Получение старого HTML после события щелчка в обработчике селена Java
Я создал пользовательский обработчик в интерактивном селене, как показано ниже
public class SomeHandler implements InteractiveSeleniumHandler {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public String processDriver(WebDriver driver) {
String accumulatedData = "";
try {
Configuration conf = NutchConfiguration.create();
new WebDriverWait(driver, conf.getLong("libselenium.page.load.delay", 3));
WebElement more = driver.findElement(By.className("ulBlueLinks"));
more.click();
LOG.error("before collecting data:");
JavascriptExecutor jsx = (JavascriptExecutor) driver;
jsx.executeScript("document.body.innerHTML=document.body.innerHTML;");
accumulatedData = driver.findElement(By.tagName("body")).getAttribute("innerHTML");
}
catch (Exception e) {
LOG.error(StringUtils.stringifyException(e));
}
return accumulatedData;
}
public boolean shouldProcessURL(String URL) {
return true;
}
}
Проблема в том, что иногда я получаю полные данные (данные, в том числе после события щелчка), а иногда не получаю динамические данные.
Примечание. Я могу видеть событие нажатия в браузере. Я использую ниже:
- Firefox 61
- Селен 3,13
- Apache Nutch 1.14
1 ответ
После нажатия подождать некоторое время, чтобы загрузить страницу.
ты можешь подождать document.readyState = complete
который будет ждать, пока страница загрузится.
((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");