2013-04-09 29 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" 
. . . 
相關問題