gpt4 book ai didi

Webdriver Xpath 性能

转载 作者:行者123 更新时间:2023-12-01 07:31:14 25 4
gpt4 key购买 nike

评估长 xpath 与评估短 xpath 所需的时间是否存在重大差异?
前任。
之间是否存在性能差异/div[@id = 'id1']/label[contains(text(), 'Hello')/../../descendant::input//input
和使用有什么区别By.id("id1")By.Xpath("//*[@id='id1']")

最佳答案

我很高兴你问了,我发现答案令人惊讶。

  • 短 xpath 比长 xpath 快,但相差不大
  • 在 Firefox 上,按名称搜索比长 xpath 快,但是短 xpath 的死热(有时更快)
  • 在 Internet Explorer 上,By.name 是 比 xpath
  • 慢很多

    这似乎违背了 Simon Stewart 一直给出的指导:IE 的 xpath 性能,所以我对它持保留态度,但在下面的代码中,它非常一致。

    我写了一个快速测试来说明这一点。它在 Google 上寻找搜索框
    package com.PeterNewhook;

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.ie.InternetExplorerDriver;

    public class FooTest {

    public static void main(String[] args) {
    long start;
    long end;
    WebDriver driver;
    String longXpath = "/html/body/span[@id='main']/center/span[@id='body']/center/form/table/tbody/tr/td[2]/div[@class='ds']/input[@name='q']";
    String shortXpath = "//input[@name='q']";
    String elementId = "q";

    System.out.println("Using Firefox driver.");
    driver = new FirefoxDriver();
    driver.get("http://google.com");
    start = System.nanoTime();
    driver.findElement(By.xpath(longXpath));
    end = System.nanoTime()-start;
    System.out.println("The long XPath lookup took " + (double)end/1000000000.0 + " seconds.");
    start = System.nanoTime();
    driver.findElement(By.xpath(shortXpath));
    end = System.nanoTime() - start;
    System.out.println("The short XPath lookup took " + (double)end / 1000000000.0 + " seconds.");
    start = System.nanoTime();
    driver.findElement(By.name(elementId));
    end = System.nanoTime() - start;
    System.out.println("The By.name lookup took " + (double)end / 1000000000.0 + " seconds.");
    driver.close();

    System.out.println("\nUsing Internet Explorer driver.");
    driver = new InternetExplorerDriver();
    driver.get("http://google.com");
    start = System.nanoTime();
    driver.findElement(By.xpath(longXpath));
    end = System.nanoTime()-start;
    System.out.println("The long XPath lookup took " + (double)end/1000000000.0 + " seconds.");
    start = System.nanoTime();
    driver.findElement(By.xpath(shortXpath));
    end = System.nanoTime() - start;
    System.out.println("The short XPath lookup took " + (double)end / 1000000000.0 + " seconds.");
    start = System.nanoTime();
    driver.findElement(By.name(elementId));
    end = System.nanoTime() - start;
    System.out.println("The By.name lookup took " + (double)end / 1000000000.0 + " seconds.");
    driver.close();
    }
    }

    这给出了输出:

    使用火狐驱动。
    长时间的 XPath 查找耗时 0.13667022 秒。
    简短的 XPath 查找耗时 0.024628577 秒。
    By.name 查找耗时 0.025209911 秒。

    使用 Internet Explorer 驱动程序。
    长时间的 XPath 查找耗时 0.196125248 秒。
    简短的 XPath 查找耗时 0.164044262 秒。
    By.name 查找耗时 1.005109964 秒。

    关于Webdriver Xpath 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522291/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com