2010-09-08 93 views
1

我在使用Selenium RC測試我的html頁面部分時遇到問題。如果一個元素出現在頁面中,並且在加載頁面時可見,那麼Selenium RC可以訪問它並可以獲取它的值或寫入它(如果它是輸入的話)等。如何使用Selenium RC測試DHTML?

但是如果該元素不可見並且只能使用javascript顯示,則硒不能使用它。例如,我有2個div:

<div id="row2" class="row" onclick="switchTo('row2e');"> 
    <div class="row label">Address</div> 
    <div class="row data">${user.address}</div> 
</div> 
<div id="row2e" class="row-edit"> 
    <form id="address-form" name="address-form" method="post" onsubmit=""> 
    <div class="row label">Address-Must be 5-25 letters or numbers</div> 
    <input type="text" id="address" name="address" value="${user.address}"/> 
    <button>Change address</button> 
    </form> 
</div> 

加載頁面時div「row2」可見,「row2e」被隱藏。當我點擊「row2」divs將被改變(使用javascript),以便「row2」將被隱藏,並且「row2e」將可見。此時Selenium RC無法管理「row2e」div中的輸入。

當使用javascript更改大部分頁面時(沒有提交頁面),我遇到同樣的問題。

任何想法,爲什麼會發生這種情況?

回答

1

您是否在等待RC發生變化?在許多UI腳本框架中,跑步者不會等待你所做的事情的交互式結果,除非你告訴它。通常使用iMacros(窮人的硒)我只需要等待自動回發,但即使JS執行所花費的時間也比Selenium願意等待的快速計算機運行時間要長。在嘗試訪問新顯示的控件之前,讓它睡半秒鐘。

0

我建議使用TestPlan用於有很多元素變化的頁面。它有一個智能的等待系統,如果一個元素不存在,它會在繼續之前等待幾分鐘。這使您可以編寫測試,而無需擔心元素是靜態的還是動態的。

對於一個簡單的例子,你可以在這裏鍵入:

Click //div[@id="row2"] 
Click //div[@id="row2e"]//button 

如果按鈕是一個動態元素測試計劃將等待幾秒鐘,它出現,然後單擊它。但大多數情況下,您只是將該頁面用作用戶,TestPlan會找出要執行的操作。

順便說一句,它可以使用Selenium作爲後端,除了HTMLUnit。

相關問題