c# - Selenium:By.Id ("myelement") 和 By.Css ("#myelement") 之间是否存在性能差异?

标签 c# .net google-chrome selenium specflow

我在 .NET 中围绕 IWebDriver 为我们的测试人员编写了一些辅助方法,并开始想知道当您可以使用 CSS 选择器也可以通过 ID 获取元素时,是否有任何意义通过 ID 获取元素身份证。

我认为,最终,对 CSS“#myelement”的请求将被优化为 document.getElementById("myelement")。

有性能差异吗?当我们可以使用 CSS 选择器来完成同样的事情时,我们是否应该费心使用 By.Id 和 By.Name?

最佳答案

By.cssSelector()By.id() 更快。​​

使用By.id()查找元素的方法其实是利用了xpath:

    @Override
    public List<WebElement> findElements(SearchContext context) {
      if (context instanceof FindsById)
        return ((FindsById) context).findElementsById(id);
      return ((FindsByXPath) context).findElementsByXPath(".//*[@id = '" + id
          + "']");
    }

    @Override
    public WebElement findElement(SearchContext context) {
      if (context instanceof FindsById)
        return ((FindsById) context).findElementById(id);
      return ((FindsByXPath) context).findElementByXPath(".//*[@id = '" + id
          + "']");
    }

By.cssSelector 使用 CSS 引擎。 CSS 比 xpath 更快,因此,By.cssSelector 将比 By.id

运行得更快

关于c# - Selenium:By.Id ("myelement") 和 By.Css ("#myelement") 之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21159505/

相关文章:

c# - 如果引用特定库,如何标记要编译的 C# 代码的一部分;如果没有引用特定库,则忽略它?

C# + 字符串格式化

c# - 根据模式 C# 将文本拆分为变量

c# - LINQ to Entities - 查询中的 Where IN 子句

c# - 如何初始化用 System.Xml.Serialization.XmlElementAttribute(String, Type) 修饰的类型

android - 如何在我的 Galaxy S3 Android 设备上的 Chrome 中执行检查元素?

c# - db4o 如何通过配置重命名类

c# - CompareTo 如何对列表进行排序?

javascript - Chrome 扩展程序 : How to Manage separate instances of background pages?

google-chrome - 我可以在 Chrome 中禁用本地字体吗?