我正在编写测试以使用javascript在nightwatch中执行。我在填写相同表格的情况下有两个密码字段,以便注册新帐户。我使用与input[type=password]
连接的表单的ID选择它们,稍后使用.setValue()
将一些字符串插入其中。
问题在于区分这两个密码字段。我不想使用id或类来选择它们,因为我不希望它以这种方式依赖于css。这是因为测试是针对开发人员不断工作的实时网站,每次css名称更改时,如果测试依赖于元素的id而不是其类型,则必须修改测试。我无法控制许多开发人员以及他们更改和不更改的名称。我唯一的选择就是尽可能独立于css编写我的测试。如果我可以使用他们的类型选择密码字段,我将只依赖于用于选择密码字段,用户名字段和登录按钮的表单名称。
有没有办法做到这一点?提前谢谢。
答案 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')