ruby watir web-driver无法访问动态元素

时间:2014-05-14 16:55:32

标签: ruby watir-webdriver selenium-chromedriver

我有一个我需要登录的网站,但每次输入文本字段ID和名称之一都会更改。有没有办法通过正则表达式访问元素?提前谢谢。

示例:

ID = “形式:涡卷:j_idt1297:0:j_idt1298:输入”
ID = “形式:涡卷:j_idt2151:0:j_idt2152:输入”

<input class="iceInpSecrt large" 
id="form:wrap:j_idt1297:0:j_idt1298:input"    
name="form:wrap:j_idt1297:0:j_idt1298:input" 
onblur="setFocus('');" onfocus="setFocus(this.id);" 
onkeyup="iceSubmit(form,this,event);" 
onmousedown="this.focus();" tabindex="" type="password" value="">

1 个答案:

答案 0 :(得分:4)

是的,您可以使用正则表达式匹配元素。它类似于按字符串定位id / name。

看起来像:

browser.text_field(:id => /a_regex/)

对于您的示例,以下内容将使用上述任一ID找到文本字段:

browser.text_field(:id => /form:wrap:j_idt\d{4}:0:j_idt\d{4}:input/)

注意:

  • 您需要验证此正则表达式是否也不会与页面上的其他元素匹配。如果是这样,您将需要通过使用有关元素(可能是类)的其他信息或元素周围的信息(可能是字段的标签)来使搜索更具体。
  • 根据页面上的其他元素,此正则表达式可能比您需要的更具体。例如,也许只是第一部分是独一无二的。在这种情况下,您可以/form:wrap:j_idt/