1

我在 Maven 中做项目。我尝试从 URl 获取页面。到目前为止,我成功地从网络获取页面。但我有两个问题,

问题

  1. 下面的代码需要大约 14 秒来获取任何两个 URL 页面,我怎样才能减少这个时间,帮助我优化这个。
  2. 完成执行后,它不会从代码中退出。为什么 ?我用 结束了代码driver.close()。那么,为什么,它没有成功退出。我在开始之前和完成过程之后添加了快照。请看这些。

帮助我解决我的问题。请。

我的代码:-

package XXX.YYY.ZZZ.Template_Matching;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.w3c.dom.Document;

public class HtmlUnit {
   
    public static void main(String[] args) throws Exception {
        String url1 = "http://www.jabong.com/men/shoes/men-loafers/?source=home-leftnav";
        String url2 = "http://www.jabong.com/fastrack-9915Pp36J-Black-Pink-Analog-Watch-198499.html";
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C://Users//jhamb//Desktop//phantomjs-1.9.0-windows//phantomjs.exe");
        WebDriver driver = new PhantomJSDriver(caps);
        driver.get(url1);
        String hml1 = driver.getPageSource();
        driver.get(url2);
        String hml2 = driver.getPageSource();
        driver.close();
        //System.out.println(hml1);
        //System.out.println(hml2);
           Document doc1 = Jsoup.parse(hml1);
           Document doc2 = Jsoup.parse(hml2);
           // Some operations using these DOM tree, just like , comparing Templates of two URLS
    }
}

开始过程之前的快照,

在此处输入图像描述

完成该过程后的快照,当它无故等待时,

在此处输入图像描述

4

2 回答 2

2

你需要使用

driver.quit();

代替

driver.close();
于 2013-11-12T13:49:05.663 回答
1

我怀疑驱动程序正在创建一个线程并且它没有退出。尝试在 main 末尾添加 System.exit ,看看它是否解决了您的问题。

于 2013-04-08T05:45:03.260 回答