Получение старого 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;
  }
}

Проблема в том, что иногда я получаю полные данные (данные, в том числе после события щелчка), а иногда не получаю динамические данные.

Примечание. Я могу видеть событие нажатия в браузере. Я использую ниже:

  1. Firefox 61
  2. Селен 3,13
  3. Apache Nutch 1.14

1 ответ

После нажатия подождать некоторое время, чтобы загрузить страницу.

ты можешь подождать document.readyState = complete который будет ждать, пока страница загрузится.

((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
Другие вопросы по тегам