【问题标题】:Javascript looping elements using webdriverIO使用 webdriverIO 的 Javascript 循环元素
【发布时间】:2018-05-17 02:48:55
【问题描述】:

* Javascript 新手 *

当我在 Javascript 中获取元素列表时如何循环元素。下面是我在 Java 中的表现,但不确定我将如何使用 Java 脚本。

List<WebElement> elements = driver.findElements(By.xpath("//div[@id='container']"));    
        System.out.println("number of elements: " + elements.size());

        for(WebElement ele : elements){
            //ele.sendKeys("value");
            System.out.println(ele.getText());
            //System.out.println(ele.getAttribute("id"));
            //System.out.println(ele.getTagName());
        } 

我可以使用browser.elements 获取元素。但我不确定如何循环播放它。

谢谢。请帮忙。

【问题讨论】:

  • 如果 elements.size() 不是 0 或 1,那么无论如何您都在处理无效的 HTML
  • document.querySelectorAll('#container').forEach(e =&gt; console.log(e.textContent))

标签: javascript node.js webdriver es6-promise webdriver-io


【解决方案1】:

webdriverio 中的等价物是这样的:

var elements = browser.elements("//div[@id='container']");

elements.value.forEach(function(el) {
  console.log(browser.elementIdText(el.ELEMENT).value);
});

【讨论】:

  • 您可以将第二部分简化为:elements.forEach(function(el) { console.log(el.getText()); });
  • 不,你不能。 browser.elements() 返回 WebElement JSON 对象的数组。该数组位于elements.value 属性中。来自文档:The array of elements can be retrieved using the ‘response.value’ which is a collection of element ID’s and can be accessed in the subsequent commands using the ‘.ELEMENT’ method.
  • 您是正确的,它返回 WebElement JSON 对象的数组,但 WebdriverIO 足够聪明,知道如何处理该数组。我写了一个例子,你可以在这里运行:try.learnwebdriverio.com/share/uOlqeSwhIJWVTgDX
  • 那不是很花哨。 .filter().map().reduce()呢?
  • 没关系,我自己试了一下,发现效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多