如何在使用selenium单击按钮后获取页面源

时间:2015-07-18 14:49:59

标签: java parsing selenium selenium-webdriver webdriver

我在点击搜索按钮后尝试获取页面源。这是我的代码:

WebDriver driver = new ChromeDriver();
driver.get(page);
WebElement el = driver.findElement(By.xpath(xpath)); // button
el.click();
driver.getPageSource();

并且此代码返回第一页的页面源,而不是单击...

之后加载的页面源

2 个答案:

答案 0 :(得分:4)

在获取页面源之前,您需要明确等待新页面加载。这通常取决于您正在使用的网页。例如,您可以等到特定元素变为可见:

WebDriverWait wait = new WebDriverWait(webDriver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("myid")));

driver.getPageSource();

答案 1 :(得分:1)

实际上你不应该依赖那种方法,因为不能保证它代表你当前的状态,实现还取决于你正在使用的特定驱动程序。

来自docs

java.lang.String getPageSource()
     

获取上次加载的页面的来源。如果页面在加载后被修改(例如,通过Javascript)则没有   保证返回的文本是修改后的页面的文本。请   查阅正在使用的特定驱动程序的文档   确定返回的文本是否反映了当前的状态   页面或Web服务器最后发送的文本。页面源返回   是底层DOM的表示:不要指望它   格式化或转义的方式与从Web发送的响应相同   服务器。把它想象成艺术家的印象。

Returns: The source of the current page