是否可以在单个webdriver http调用中组合多个命令?

时间:2017-10-11 07:46:27

标签: selenium selenium-webdriver webdriver

我使用Java中的Selenium和远程网格。当我在页面上找到一个元素时,我想从该元素中检索其文本,多个属性,检查它是否显示以及是否已启用。

据我所知,我检索的每一件事都会触发一个新的远程调用(到webdriver的http端点)。由于我事先知道我感兴趣的值,我想将它们组合在一个http调用中(因为调用可能非常慢)。这是可能的Selenium与Java?甚至使用webdriver协议?

要明确:我的问题是没有一次找到基于多个标准的元素,我知道如何做到这一点。但之后我找到了我想知道多个属性值的元素,我想有效地收集它们。

据我所知,协议需要单独调用每个属性值,文本,元素是否显示以及是否启用。对我来说,这意味着例如6次到服务器的往返,如果我能够复用'我想在一次通话中检索的所有数据。

有没有办法在找到元素后优化检索元素的多个细节/属性?

1 个答案:

答案 0 :(得分:0)

解决方案是在驱动程序和服务器之间进行较少的调用可能是在客户端/窗口的上下文中使用一些javascript。

您可以编写类似

的内容
combinedObject = driver.executeScript("function(domelement) {
  return { abc: domelement.getAttribute('abc'), efg: domelement.getAttribute('efg'), hij: domelement.getAttribute('hij') };
}",foundedElement);

这可以减少驱动程序和服务器之间的调用次数。

如果将一些javascript函数与java代码混合是有意义的,那就是你的决定。