Java селен getPageSource не работает

Мне нужен источник URL-адреса, указанного в программе. Но программа возвращает только некоторые данные json, а не весь исходный код страницы. В чем проблема??

public class selenium
{
public static void main(String[] args)
{
    selenium.loadPage("http://photos.filmibeat.com/celebs/kajal-aggarwal/photos-c14-e13421-p592995.html");
}
public static void loadPage(String url)
{

    WebDriver driver = new FirefoxDriver();

    driver.get(url);

    String html = driver.getPageSource();

    System.out.println(html);

    driver.quit();        

}
}

person user2186465    schedule 09.07.2015    source источник


Ответы (3)


Я просто добавляю больше информации к ответу @alecxe. Решение, предоставленное alecxe, работает отлично.

Размер вывода консоли eclipse по умолчанию составляет всего 80000 символов.

введите здесь описание изображения

Window > Preferences, перейдите к Run/Debug > Console section >, затем отключите limit console option

или записать данные в файл

    File file = new File("path/filename.txt");
    FileWriter fw = new FileWriter(file.getAbsoluteFile());
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write(content);
    bw.close();

Надеюсь, это поможет вам

person Vicky    schedule 09.07.2015

Проблема в том, что вы получаете исходный код страницы слишком рано - в этот момент страница еще не загружена. Используйте явное ожидание ждать, пока конкретный элемент на странице станет видимым.

Например, ожидание, когда блок списка фотографий станет видимым:

WebDriverWait wait = new WebDriverWait(webDriver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("photoListBlock"));
person alecxe    schedule 09.07.2015

Вышеупомянутая проблема может быть решена с помощью как неявного, так и явного ожидания. Здесь я попытался с неявным ожиданием с вашим кодом. Пожалуйста, попробуйте это. Это сработало для меня с приведенным ниже кодом.

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Pagesource
{
public static void main(String[] args)
{
    Pagesource.loadPage("http://photos.filmibeat.com/celebs/kajal-aggarwal/photos-c14-e13421-p592995.html");
}
public static void loadPage(String url)
{
    WebDriver driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get(url);

    String html = driver.getPageSource();

    System.out.println(html);

    driver.quit();      
}
person Hari kishen    schedule 09.07.2015