识别没有唯一属性的text_field

时间:2014-11-06 22:16:11

标签: watir-webdriver page-object-gem

我必须填写必填文本字段,html如下

<input type="tel" id="54221" class="NEdit" title="" maxlength="5" style="position: absolute; overflow: hidden; font-style: normal; font-weight: normal; font-family: arial; font-size: 12px; text-align: right; width: 41px; left: 136px; top: 83px; height: 14px;">

id是动态的,所以我试过了 text_field(:trouble, :type => 'tel', :max_length => '5')text_field(:trouble, :type => 'tel', :title => '')text_field(:trouble, :type => 'tel', :title => '', :max_length => '5')

似乎什么都没有用。有什么建议?请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

通过maxlength等属性定位元素存在一个突出问题。我遇到了与tabindex类似的问题(参见Issue 207)。尚未解决的一般问题是Issue 28

当Watir将定位器转换为XPath时,会出现问题。它最终得到一个属性名称不匹配的XPath:

//input[@max-length="5" ...

一种解决方法是绕过这个逻辑并自己创建一个CSS选择器或XPath。使用maxlength的两种方法可以重写为:

text_field(:trouble, :css => 'input[type="tel"][maxlength="5"]')
text_field(:trouble, :css => 'input[type="tel"][maxlength="5"][title=""]')

另一个未使用maxlength的尝试似乎按预期工作:

text_field(:trouble, :type => 'tel', :title => '')