加快selenium webdriver?

时间:2015-07-01 19:38:53

标签: java performance selenium

我使用selenium webdriver自动化网页使用。无头浏览器不允许。

Selenium在完全加载的单个页面上找到多个元素似乎相当慢。

有没有人有关于如何加快速度的任何提示?我通常通过xpath搜索对象。

我搜索过Google并阅读similar SO posts。我正在寻找新的想法

2 个答案:

答案 0 :(得分:1)

在这种情况下,我喜欢使用页面源创建一个org.w3c.dom文档,然后使用javax.xml libary解析它:

public static Document getWebpageDocument_fromSource(String source) throws InterruptedException, IOException {
    try {
        HtmlCleaner cleaner = new HtmlCleaner();
        CleanerProperties props = cleaner.getProperties();
        props.setAllowHtmlInsideAttributes(true);
        props.setAllowMultiWordAttributes(true);
        props.setRecognizeUnicodeChars(true);
        props.setOmitComments(true);

        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = null;
        try {
            builder = builderFactory.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }

        TagNode tagNode = new HtmlCleaner().clean(source);

        Document doc = new DomSerializer(new CleanerProperties()).createDOM(tagNode);

        return doc;
    } catch (ParserConfigurationException ex) {
        ex.printStackTrace();
        return null;
    }
}

然后通过xpath访问元素,如下所示:

String myXpathStr = "//*[@id='news-main']/div";
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList articleBlocks = (NodeList)xPath.compile(myXpathStr).evaluate(doc, XPathConstants.NODESET);
希望有所帮助。我也同意id和css更快的其他答案。我发现xpath更强大,但我没有很多css路径的经验

答案 1 :(得分:0)

我按idclass name和其他易于识别的元素进行搜索。但速度将基于网络连接和硬件等。你总是可以使用HTMLDriver,因为这将是最快的驱动程序版本。