我正在用硒測試一個django應用程序,我的一個網頁使用jquery ui tabs element。其中一個選項卡包含一個列出一些用戶的簡單表格,並通過ajax加載。當使用該應用程序時,該選項卡工作得很好,但是使用硒自動執行測試時,該選項卡似乎不會加載它的內容! 我在python中自己寫測試。起初,我用的是點擊硒RC的方法,但是當我從之前的測試中學到的東西時,這對於錨定標籤來說是非常麻煩的,所以我使用了之前使用的解決方案:wait_for_condition方法,並顯式調用標籤點擊事件(甚至是加載事件!),然而該標籤是仍然不工作!
我在這裏絕望了,我的大部分測試都依賴於那個頁面,其中幾乎一半都在那張桌子上,但是,唉,好像selenium搞砸了javascript! (我在課堂上有其他測試,它們運行得很好,所以在服務器級別沒有什麼奇怪的事情,它似乎是由客戶端的硒引起的問題) 我的測試代碼與此類似:如何用硒測試jquery ajax選項卡?
class TestMyApp(TransactionTestCase):
urls = 'myapp.test_urls'
def setUp(self):
self.verificationErrors = []
self.selenium = selenium("localhost", 4444, "*chrome", "http://localhost:8000/")
self.selenium.start()
#self.selenium.set_speed(2000)
self.selenium.window_maximize()
def test_users_list(self):
"""Test that an app's users are correctly listed"""
sel = self.selenium
users = []
for u in range(settings.FREE_USER_LIMIT/2):
users.append(self.app.users.create(name="testUser_%s"%uuid4()))
sel.open("/")
sel.wait_for_page_to_load("30000")
sel.wait_for_condition('selenium.browserbot.getCurrentWindow().jQuery("#tabs").tabs("select",1);\
selenium.browserbot.getCurrentWindow().jQuery("#tabs").tabs("load",1);',
3000)
for user in users:
try: self.failUnless(sel.is_text_present(user.name))
except AssertionError, e: self.verificationErrors.append(str(e))
try: self.failUnless(sel.is_text_present(str(user.added.date())))
except AssertionError, e: self.verificationErrors.append(str(e))
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
ipython是偉大的,順便說一句。 http://ipython.scipy.org/moin/ – Purrell 2010-06-25 11:09:50
不錯,我幾天前安裝了ipython,這真的很酷!所以,我做了你所說的話,耐心地一步一步地發現它實際上是我的錯:對於測試,我使用了一個自定義的URLConf(在django中爲url定位),並且ajax調用正在提高 - 一個404,所以這個元素從來沒有真的出現過!你的答案非常好,肯定會幫助我解決類似的問題,謝謝! – lfborjas 2010-06-25 23:06:11
:)是的沒有問題,我很高興它有幫助。我一直處於相同的情況幾十(幾百?)次,所以我知道它是什麼樣子。這種事情可能會頻繁出現,所以我真的試圖通過特別小心來儘量減少故障排除時間,但ipython交互式調試技巧可以創造奇蹟,並在不可避免的怪癖出現時節省時間。我曾見過嘗試在Java中使用Se測試套件的工程商店......呃,爲Python解釋器感到高興! 乾杯! – Purrell 2010-06-26 00:00:02