【问题标题】:Getting the old html after an click event in selenium handler java在 selenium 处理程序 java 中单击事件后获取旧 html
【发布时间】:2019-01-04 04:42:51
【问题描述】:

我在交互式 selenium 中创建了一个自定义处理程序,如下所示

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. 火狐61
  2. 硒 3.13
  3. Apache Nutch 1.14

【问题讨论】:

  • 添加 return "jsx.executeScript(" return document.body.innerHTML=document.body.innerHTML;");"

标签: java selenium-webdriver selenium-hub


【解决方案1】:

点击后等待一段时间加载页面。

您可以等待document.readyState = complete,它会等到页面加载完毕。

((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");

【讨论】:

  • 我试过了,但它不起作用。页面也没有完全加载。页面的某些部分正在加载。所以我认为它不起作用
  • 然后你可以找到最后一个正在加载的元素,并对该元素保持显式等待,例如 expected_condition.is_element_visible 之类的。这将等到页面加载完毕。
  • 更多关于显式等待的信息在这里selenium-python.readthedocs.io/waits.html
  • 你能举个例子吗?
  • 尝试element = WebDriverWait(driver, 30).until( EC.visibility_of_element_located((By.ID, "myDynamicElement"))更改定位器
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2015-12-22
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 2022-11-19
  • 2015-07-02
  • 2013-04-26
相关资源
最近更新 更多