nightwatch,select 具有相同输入类型的第二个元素

nightwatch, select second element with same input type

我正在使用 javascript 编写测试以在守夜人中执行。为了注册一个新帐户,我在同一张表格下有两个密码字段。我 select 他们使用与 input[type=password] 连接的表单的 ID,后来使用 .setValue() 向其中插入一些字符串。

问题在于区分这两个密码字段。我不想使用 id 或 class 来 select 它们,因为我不希望它以这种方式依赖于 css。这是因为测试是针对开发人员不断工作的实时网站,并且每次 css 名称更改时,如果它依赖于元素的 id 而不是它们的类型,则必须修改测试。我无法控制许多开发人员以及他们更改和不更改的名称。我唯一的选择是尽可能独立于 css 编写测试。如果我可以 select 使用其类型的密码字段,我将只依赖于用于 select 密码字段、用户名字段和登录按钮的表单名称。

有什么办法吗?提前致谢。

我不确定您是否可以在不依赖 css 的 "any" 形式的情况下巧妙地做到这一点。 HTML 是 DOM 表示,因此您至少必须在该方面进行工作。

然而,您可以脱离使用特定的 ID、属性并仅在 DOM class 元素内工作。

例如,如果您有以下内容:

<form>
    <input>a</input>
    <input>b</input>
</form>

您可以只做 "form > input:nth-of-type(2)" 作为您的选择器。 所以它总是会获取 form

的直接子节点下的第二个 input 元素

http://www.w3schools.com/cssref/sel_nth-of-type.asp

然而,这假设结构被锁定并且并不总是变化。

希望对您有所帮助!

您可以将 <input> 视为从 1 开始计数的数组 所以如果你想获得第二个输入就做

.setValue('//form[@id="yourformid"]/input[2]','blablabla')