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