2013-04-10 49 views
0

在過去的幾個月中,我一直在教自己的Python。我的第一個項目是使用Selenium RC Web驅動框架的瀏覽器驅動程序測試用例(儘管我的項目中沒有導入webdriver,以免混淆)。基本上,我的測試用例需要鉤入用JavaScript和HTML編寫的'.aspx'頁面的刷新循環。該循環不斷刷新該頁面,直到滿足sel.is_text_present("foo")條件。在刷新之前,直到出現定義的「文本」爲止,該腳本應該是click與字符串is_text_present一起出現的JavaScript按鈕。在執行腳本時,Firefox會打開並指向自己的特定頁面並輸入其refresh loop,但當文本出現時(即.aspx頁面更改其狀態並使用JavaScript按鈕加載JavaScript表格),該腳本不會執行其他分支的循環。下面是一個代碼片段,顯示我已經實現的邏輯:Selenium RC/Python/JavaScript .aspx/Loop語句

i = sel.is_text_present("Schedule") #text that the test case is 'waiting' for 
while i != True: 
    print i 
    print "Waiting for job..." 
    sel.refresh() 
else:     
    print "Job found..." 
    sel.click("id=Select") 
    sel.wait_for_page_to_load("30000") 
    sel.click("id=1") 
    sel.wait_for_page_to_load("30000") 
    print "Success!" 
    test_py_s_f_t_c() #calls this function again to repeat the test case 

請問我的循環語句的邏輯指示Firefox的刷新,直到它檢測到的文本字符串,然後在檢測這個字符串點擊一個按鈕?如果按鈕的名稱是動態變化的,是否可以在按鈕ID中使用通配符?

回答

0

純粹在邏輯上看,這是不正確的。因爲刷新後你沒有檢查文本的存在。

你可以這樣寫。

i = sel.is_text_present("Schedule") #text that the test case is 'waiting' for 
while i != True: 
    print i 
    print "Waiting for job..." 
    sel.refresh() 
    i = sel.is_text_present("Schedule") #text that the test case is 'waiting' for 

print "Job found..." 
+0

'Else:'呢?即循環的另一個分支。 'is_text_present()'爲False時,循環需要循環。當它刷新並找到文本時,它需要執行另一組指令。謝謝! – philthy 2013-04-11 23:44:56

+0

沒關係,我現在明白了下一個順序線將被執行!謝謝。 – philthy 2013-04-12 00:04:43

0

我只通過C#API使用硒,但你可以嘗試使用XPath在點擊功能

sel.click( 「//輸入[包含(@ ID, 'partialId')」) ;或按鈕取決於您正在使用的HTML的類型

+0

好的,謝謝,我會讀更多關於Xpath! – philthy 2013-04-11 23:45:24