夜视仪,选择具有相同输入类型的第二个元素

时间:2015-06-09 06:33:18

标签: javascript nightwatch.js

我正在编写测试以使用javascript在nightwatch中执行。我在填写相同表格的情况下有两个密码字段,以便注册新帐户。我使用与input[type=password]连接的表单的ID选择它们,稍后使用.setValue()将一些字符串插入其中。

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

有没有办法做到这一点?提前谢谢。

2 个答案:

答案 0 :(得分:4)

我不确定你是否可以聪明地做到这一点而不依赖于"任何"形式的CSS。 HTML是一种DOM表示,因此您至少必须在该方面工作。

但是,您可以仅使用特定的ID,属性和仅在DOM类元素中工作。

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

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

您可以"form > input:nth-of-type(2)"作为选择器。 因此,它始终会抓取input

的直接子项下的第二个form元素

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

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

希望这有帮助!

答案 1 :(得分:0)

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

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