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')
我正在使用 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')