java中Internet Explorer的无头浏览器

时间:2016-10-19 13:53:43

标签: internet-explorer selenium htmlunit headless-browser

只能支持IE的应用程序,我必须执行屏幕抓取。我尝试过htmlUnit和selenium htmlUnit驱动程序,这对我来说没有用。我想知道,java浏览器中是否有可用的无头浏览器api。请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以查看JExplorer Java库,该库允许将MS IE Web浏览器控件嵌入到Java AWT / Swing应用程序中,并直接从Java代码中使用MS IE功能。

例如:

import com.teamdev.jexplorer.Browser;
import com.teamdev.jexplorer.BrowserFeatures;
import com.teamdev.jexplorer.BrowserMode;
import com.teamdev.jexplorer.dom.*;
import com.teamdev.jexplorer.event.NavigationAdapter;

import javax.swing.*;
import java.awt.*;

/**
 * The sample demonstrates how to get all elements with tag A and 
 * print their text content.
 */
public class DOMGetElementsSample {
    public static void main(String[] args) {
        BrowserFeatures.enableBrowserMode(BrowserMode.IE11);
        Browser browser = new Browser();

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(browser, BorderLayout.CENTER);
        frame.setSize(800, 600);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        browser.addNavigationListener(new NavigationAdapter() {
            @Override
            public void mainDocumentCompleted(Browser browser, String url) {
                DOMDocument document = browser.getDocument();
                DOMNodeList elements = document.getElementsByTagName("a");
                int length = elements.getLength();
                for (int i = 0; i < length; i++) {
                    DOMNode domNode = elements.item(i);
                    if (domNode instanceof DOMElement) {
                        DOMElement element = (DOMElement) domNode;
                        System.out.println("Text Content: " + 
                                element.getTextContent());
                    }
                }
            }
        });
        browser.navigate("http://www.google.com");
    }
}