javascript - 我如何使用 Nightwatch.js 从 ol 元素中的 li 项目中获取文本?

标签 javascript selenium testing

我必须使用 NW 做一个小测试工具,从一个简单的 ol li 元素获取数组的标题。例如:我需要一个包含:Coffe、Tea、Milk 的数组。

<ol>
 <li>Coffee</li>
 <li>Tea</li>
 <li>Milk</li>
</ol>

提前感谢您的合作。

编辑>>

好吧,感谢@SoftwareEngineer171,我使用 .execute() 将 js 注入(inject) Nightwatch,现在正在运行。这是我使用的代码,现在使用数组。此代码使用@SoftwareEngineer171 代码打印 ol 列表的 li 项的数量(在这种情况下我使用了 css 选择器)...

module.exports = {
'Demo' : function (client) {
client
  .url('http://mylink.com/items')
  .waitForElementVisible('body', 1000)
  .execute(function(){
    var arr = (function(a, b){
        return (Array(a.length) + '').split(',').map(function(c, d){
            return a[d].innerHTML;
      });
      })(document.getElementsByClassName("listing-view")[0].getElementsByClassName("listing-view-item"));
    return arr;  
  }, ['arr'] ,function(result){
      array_h1 = result.value
      console.log(array_h1.length)
  })
  .pause(5000)
  .end();
  }
};

最佳答案

这解决了您的问题。

var arr = (function(a){
    return (Array(a.length) + '').split(',').map(function(c, d){
        return a[d].innerHTML;
    });
})(document.getElementsByTagName('ol')[0].getElementsByTagName('li'));

编辑

好的,您要求解释这段代码,所以就在这里。
首先,我们定义anonymous需要一个参数的函数(这是代码中的第一个函数),我们传递参数 document.getElementsByTagName('ol')[0].getElementsByTagName('li')作为变量 a代表你所有的<li>元素。现在,a是一个具有 HTMLCollection 的对象函数作为它的构造函数,所以它不是一个数组。要从此集合中提取文本,我们必须将其转换为数组。这就是我们创建新数组并映射 HTMLCollection 中每个元素的原因。到我们的新阵列。您看到的第二个函数只是复制 HTMLCollection 中的每个元素。对象到数组然后返回数组,如你所愿。
如果您还不清楚什么是 constructor , anonymous函数,数组映射等,建议阅读this文章。

关于javascript - 我如何使用 Nightwatch.js 从 ol 元素中的 li 项目中获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38416697/

相关文章:

javascript - 如何使用 javascript 从多维数组创建和填充多个表

java - intellij 声明中的 Java 字符串错误

Python:Selenium WebDriver find_elements_by_class_name

php - 扫描项目查看代码覆盖率php

java - Hsqldb存储过程

reactjs - 如何模拟实际上是 Redux 的连接 Action 创建者的 Prop ?

Javascript Regex - 删除单个空格而不是双空格

javascript - 如何在我的网站中嵌入 ace 编辑器

javascript - 生成随机值,保留返回值的历史记录

Java 网络驱动程序 : Element not visible exception