如何使用SeleniumWebDriver从动态网站下载图像

如何使用SeleniumWebDriver从动态网站下载图像,selenium,selenium-webdriver,Selenium,Selenium Webdriver,这些天我在学习自动化所以我想知道是否有任何方法可以使用Selenium从动态网站下载图像?我正在使用Java来实现这一点 我能得到40张图片的链接,但不是全部。我不知道动态网站是如何工作的,但我认为当用户滚动页面或类似的东西时,会加载/显示一些链接 你能试试这个方法吗 /** * @author mbn * @Date 05/11/2018 * @Purpose This method will download file from url * @param href *

这些天我在学习自动化所以我想知道是否有任何方法可以使用Selenium从动态网站下载图像?我正在使用Java来实现这一点


我能得到40张图片的链接,但不是全部。我不知道动态网站是如何工作的,但我认为当用户滚动页面或类似的东西时,会加载/显示一些链接

你能试试这个方法吗

/**
 * @author mbn
 * @Date 05/11/2018
 * @Purpose This method will download file from url
 * @param href
 *            --> The hyper link of the file we want to download
 * @param fileName
 *            --> the name of the file
 * @return N/A
 * @Note Path is set to .//OutputData// and will need to be chnaged as per your
 *       need
 */
public static void downloadFile(String href, String fileName) throws Exception {

    URL url = null;
    URLConnection con = null;
    int i;
    url = new URL(href);
    con = url.openConnection();
    File file = new File(".//OutputData//" + fileName);
    BufferedInputStream bis = new BufferedInputStream(con.getInputStream());
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
        while ((i = bis.read()) != -1) {
            bos.write(i);
        }
        bos.flush();
        bis.close();
}

您可以滚动直到停止加载新图像或直到满足条件。嗨,Raul1ro感谢您的回答。是的,我正在这样做,但无论我向下滚动多少次,我最多只能获得43张图像。是否有任何并行图像下载过程。我的意思是下载正在显示的图像,完成后向下滚动并重复该过程。为什么需要使用Selenium下载图像?你对此的设想是什么?demouser123实际上是我';我不是特别使用Selenium下载图像,我需要所有的图像链接,其余的可以使用简单的Java下载。因此,图像链接是动态的,我有没有办法获得所有的图像链接?请看:So的期望是,用户提问时不仅要研究回答自己的问题,还要分享研究、代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见:我感谢你的帮助。但我在动态加载链接方面遇到了问题,实际上,我正在尝试使用Selenium WebDriver获取图像链接,这些链接是动态加载的,所以尽管我滚动页面与否,我最多只能获得40个img链接。感谢您回答BTW.uwc,老实说,这可能很棘手,可能您需要等待页面加载,然后才能检索所有imagesTry此方法用于页面加载公共静态void waitForPageToLoad(long-TimeoutSeconds){log.info(“等待页面加载”);ExpectedCondition Expected=新的ExpectedCondition(){public Boolean apply(WebDriver-driver){return((JavascriptExecutor)driver.executeScript(“return document.readyState”).equals(“complete”);}或者共享url和代码,我应该会找到答案