通过ID查找元素

通过ID查找元素,第1张

通过ID查找元素

您的问题很难回答,肯定会给出一个结论性的答案。实际上,我很想将此问题标记为“太宽泛”,其他答案和评论也支持该问题。

以您的为例

element(by.id("id"));
。纵观Selenium来源, 大多数 驱动程序只是获取您提供的ID,然后将其传递给有线协议:

public WebElement findElementById(String using) {  if (getW3CStandardComplianceLevel() == 0) {    return findElement("id", using);  } else {    return findElementByCssSelector("#" + cssEscape(using));  }}

如您所知,每个浏览器供应商都在单独的二进制文件中实现自己的有线协议。随意深入编写代码,为您自己挖一个更深的洞。

对于其他不支持有线协议的浏览器,例如HtmlUnit,您将拥有以下内容:

public List<WebElement> findElementsById(String id) {  return findElementsByXPath("//*[@id='" + id + "']");}

然后他们解析可用的DOM。

至于您的表现问题,任何人给您的东西都是1)只是一种 感觉 ,或者2)纯净的BS!您已经从其他答案和评论中看到了。

要获得 真实 答案(由实际数据支持),要考虑的变量太多:

  • 由不同的浏览器供应商实施的有线协议,以及不同版本中的各种优化。
  • 由不同的浏览器供应商实现的DOM引擎,以及不同版本中的各种优化。
  • 由不同的浏览器供应商实现的Javascript引擎,以及不同版本中的各种优化。

此外,由于用于构建该网站的框架的差异,您为Web应用程序/网页获得的任何结果都将最不适用于其他Web应用程序/网页。

底线是:如果您担心性能测试,那么Selenium是错误的答案。Selenium是一个功能测试库,经过优化可为您提供最佳的最终用户表示形式。性能是遥不可及的。

如果您的目标是使测试更快地运行,则可以花更多的时间在测试结构上:

  • 您打开/关闭浏览器的频率。这通常是测试中最耗时的活动。
  • 您多久刷新一次元素缓存,就 需要 多久刷新一次?考虑将您的元素移至Page Factory 模型,该模型会为您延迟加载所有元素。
  • 当然,最大的加速因素:在多台计算机上并行运行测试。

但是我认为这与您最初提出的问题脱离了话题(有些人可能会建议“保证”)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5462798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存