当前,当使用htmlunit的Web抓取工具时,我希望通过Java抓取并访问正在构建的小型网站来生成单元测试。可以在此处找到website的代码!
我还将放置正在使用的Java代码,目前,我知道必须等待时间,并且可以禁用针对以下情况弹出的错误消息:
二月。 2019年11月11日10:50:10 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误 警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:10]样式规则错误。 (无效的令牌“-”。应为以下其中之一:,,,“}”,“;”,“ *”。) 2019年2月11日晚上10:50:10 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告 警告:CSS警告:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:10]忽略此规则中的以下声明。 2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误 警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:22403]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。) 2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误 警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:23772]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。) 2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误 警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:24174]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。) 警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:101786]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。) 2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知 警告:遇到过时的内容类型:“文本/ javascript”。
问题是这些情况发生后再也不会创建文本,我也不知道为什么或如何解决此问题,并且无法在线找到它。使用htmlUnit 2.31,我正在使用的网站是React,HTML,bootstrap CSS,这是我的Java代码,注释了几行,但是无论如何它仍然永远不会得到任何文本。
我的目标是能够加载我的网站并刮除最终文件中产生的html,css和javascript,并能够在文件中查看它。这在其他网站上也可以正常使用,我可以获取错误消息
我已经在StackOverflow上尝试了不同的问题,尝试了htmlunit的网站,他们的文档以及注释掉了显示错误的行,但是这些都没有真正解决为什么根本不显示任何文本的问题。当前运行带有NodeJS的Windows 7 64bit,用于在端口3000上加载我的反应。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.BrowserVersion;
public class Scraper
{
private String outputLocation, websiteLocation;
private File output;
public Scraper()
{
outputLocation = "C:/Users/MonPC/Desktop/School/SOEN/SOEN 341 Software Process'/Project/cssd/testing/Result.html";
websiteLocation = "http://localhost:3000/";
output = new File(outputLocation);
}
public Scraper(String websiteLocation, String outputLocation)
{
this.outputLocation = outputLocation;
this.websiteLocation = websiteLocation;
output = new File(outputLocation);
}
public boolean scrap()
{
PrintWriter filewriter = null;
boolean success = false;
WebClient client = new WebClient(BrowserVersion.CHROME);
try
{
filewriter = new PrintWriter(new FileOutputStream(output));
// turn off htmlunit warnings
//java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
//java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
//client.getOptions().setJavaScriptEnabled(true);
//client.getOptions().setCssEnabled(true);
//client.getOptions().setUseInsecureSSL(true);
//client.waitForBackgroundJavaScript(100 * 1000);
HtmlPage page = client.getPage(websiteLocation);
filewriter.println(page.asXml());
System.out.println(page.asXml());
success = true;
}
catch (FileNotFoundException fnf)
{
System.out.println("File was moved or deleted during the write process");
}
catch (IOException ioe)
{
System.out.println("Couldn't connect to the website or had issues opening up default browser");
ioe.printStackTrace();
}
finally
{
if (filewriter != null)
filewriter.close();
return success;
}
}
public String getOutputLocation()
{
return outputLocation;
}
public String getWebsiteLocation()
{
return websiteLocation;
}
public File getOutput()
{
return output;
}
}