0

我試圖從Selenium IDE中將Selenium腳本導出到Python。我正在使用一些user-extension.js函數(它們在Selenium IDE中工作)。出口到Python後,生成的腳本是這樣的:當運行Python RC對Selenium服務器運行Python RC時,無法從user-extensions.js文件執行自定義Selenium聲明函數

from selenium import selenium 
import unittest, time, re 

class new_selenium_test(unittest.TestCase): 
    def setUp(self): 
     self.verificationErrors = [] 
     self.selenium = selenium("localhost", 4444, "*chrome", "http://localhost/") 
     self.selenium.start() 

    def test_selenium_assert_something(self): 
     sel = self.selenium 
     # sel.assert_something("abc=1", "x=126") 

    def tearDown(self): 
     self.selenium.stop() 
     self.assertEqual([], self.verificationErrors) 

if __name__ == "__main__": 
    unittest.main() 

注意,最有趣的線,在那裏我把我的用戶擴展代碼(函數「assert_something」,這在我的用戶的功能「assertSomething」映射extensions.js文件)已被註釋掉。當我激活該行並運行像這樣對硒服務器的腳本:

py.test new-selenium-test.py 

我得到這樣的錯誤:

AttributeError: 'selenium' object has no attribute 'assert_something' 

任何想法,爲什麼硒IDE評論了我的自定義來電,爲什麼不從Python執行它?

請注意,我已經啓動了Selenium服務器是這樣的:

java -jar selenium-server-standalone-2.0rc2.jar -userExtensions /path/user-extensions.js 

感謝您的幫助!

回答

0

你需要重寫在Python您的自定義JavaScript函數,如下所述:

http://groups.google.com/group/selenium-users/browse_thread/thread/e927dad7e6cb2944/1712b997934cece5

它可以在Python對象無法連接到您的自定義JS,所以它離開該評論在提醒你在Python中實現它。

+0

我的「斷言」功能是否需要低級別的「do_command」調用,或其他? – nxhtltzw

+0

我不知道你在斷言什麼,但是如果可以從這個範圍訪問必要的信息,那麼你可以寫一些類似'def assert_something(self,abc,x):return self.assert_equal(abc agf

+0

感謝您的info.Since我的assert_something函數也使用自定義的定位器,我假設我也必須讓Python瞭解這個自定義定位器。我如何實現這一目標?在Selenium IDE中,這可以直接使用,因爲我提供了這樣的Target:「myprefix = blabla」。我已經實現了查找的PageBot.prototype.locateElementByMyprefix函數。我如何從Python調用這個特定的定位器,然後結合我的assert_something函數?似乎無法在網上找到關於此的任何內容。 – nxhtltzw

相關問題