Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加快SeleniumWebDriver的速度?_Java_Performance_Selenium - Fatal编程技术网

Java 加快SeleniumWebDriver的速度?

Java 加快SeleniumWebDriver的速度?,java,performance,selenium,Java,Performance,Selenium,我正在使用SeleniumWebDriver自动化网页使用。不允许使用无头浏览器 Selenium在一个完全加载的页面上查找多个元素时似乎相当慢 有没有人有任何加快速度的建议?我通常通过xpath搜索对象 我在谷歌上搜索并阅读。我正在寻找新的想法我通过id、类名和其他易于识别的元素进行搜索。但速度将取决于网络连接和硬件等因素。您可以始终使用HTMLDriver,因为这将是驱动程序的最快版本 在这种情况下,我想创建一个组织。​w3c。​使用页面源解析dom文档,然后使用javax.xml库解析它:

我正在使用SeleniumWebDriver自动化网页使用。不允许使用无头浏览器

Selenium在一个完全加载的页面上查找多个元素时似乎相当慢

有没有人有任何加快速度的建议?我通常通过xpath搜索对象


我在谷歌上搜索并阅读。我正在寻找新的想法

我通过
id
类名
和其他易于识别的元素进行搜索。但速度将取决于网络连接和硬件等因素。您可以始终使用
HTMLDriver
,因为这将是驱动程序的最快版本

在这种情况下,我想创建一个组织。​w3c。​使用页面源解析dom文档,然后使用javax.xml库解析它:

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路径没有太多经验

通过ID或cssSelector搜索元素。Xpath通常是最慢的。使用预期条件,避免使用thread.sleeps。在页面工厂中使用缓存。购买更快的CPU,更多的RAM,更快的互联网连接。而且,这个问题似乎很广泛。很酷,这很有帮助,谢谢you@skandigraun“Xpath通常是最慢的”这句话已经有好几年没有实现了!CSS与XPath之争的答案是:“取决于”!