2013-04-09 78 views
2

这不是我的实际代码,但情况完全相同。

mysite.com是这样的:

<iframe name:something1> 
    <form id:something2> 
     <ul> 
     <li> 
      <input class = "class a" id = "id1" name = "name1"> 
     </li> 
     <li> 
      <input class = "class b" id = "id2" name = "name2"> 
     </li> 
     <li> 
      <input class = "class c" id = "id3" name = "name3"> 
     </li> 
     <li> 
      <input id = "sbmt_btn" type = "submit"> 
     </li> 

     </ul> 
    </form> 
</iframe> 

的Watir脚本我用:

require "watir-webdriver" 
b = Watir::Browser.new :chrome 
b.goto "mysite.com" 
b.frame(:name, "something1").text_field(:id, "id1").set "45"  #line1 
b.frame(:name, "something1").text_field(:id, "id2").set "Hello" #line2 
b.frame(:name, "something1").text_field(:id, "id3").set "World" #line3 
b.frame(:name, "something1").button(:id, "sbmt_btn").click  #line4 

问题:一号线2号线和成功运行。但系统在执行line3时会报错。系统找不到id = id3和id = sbmt_btn的对象。我经历了很多页面来解决这个问题,但不能。请帮助。 我的红宝石版本:红宝石1.9.3p362Selenium :: WebDriver :: Error :: StaleElementReferenceError元素在缓存中不存在

在此先感谢。

+3

是换页(通过AJAX或JavaScript)为您输入的每个字段? – 2013-04-09 13:24:00

+0

Justin刚刚问了一下。搜索页面HTML和JS代码以查看是否有由onchange事件或类似事件触发的回发事件。 – 2013-04-09 16:32:10

+0

他们都是在相同的形式。在更改输入字段时不会触发这样的事件。我也浏览了您的网站Justin Ko,但找不到解决方案。 – Dovinsth 2013-04-10 05:23:29

回答

0

尝试when_present命令:

. . . 
b.frame(:name, "something1").text_field(:id, "id3").when_present.set "World" 
. . . 
相关问题