2012-03-13 86 views
0

我在Webdriver中使用Selenium 2。我想通過我想要的環境作爲一組測試數據的一部分。我的代碼如下所示:在Python中評估一個變量作爲方法名稱

capability = webdriver.DesiredCapabilities.FIREFOX 

並且正常工作。不過,我想從一個變量傳遞在「火狐」,有點像這樣:

TestParameters['Environment']="FIREFOX" 
    capability = webdriver.DesiredCapabilities.TestParameters['Environment'] 

但我得到這個錯誤

AttributeError: type object 'DesiredCapabilities' has no attribute 'TestParameters' 

我能做些什麼來計算變量的內容作爲方法名稱?

+0

可能重複http://stackoverflow.com/questions/1855558/call-class-method-from-variable-in-python) – jtbandes 2012-03-13 13:07:31

+0

其實......這一個更接近愚蠢:http://stackoverflow.com/questions/3061/calling-a-function-from-a-string -with-the-functions-name-in-python – jtbandes 2012-03-13 13:07:59

回答

2

你的代碼試圖通過可變訪問屬性而不是變量的:

capability = webdriver.DesiredCapabilities.TestParameters['Environment'] 

隨着錯誤消息指出,這個評估的webdriver.DesiredCapabilitesTestParameters屬性。它沒有。

你想要的是評估其名字是TestParameters['Environment']值的屬性:

capabilityAttributeName = TestParameters['Environment'] 
capability = getattr(webdriver.DesiredCapabilities, capabilityAttributeName) 
[Python中的變量調用類方法(的
+0

正是我需要的。我知道必須有一點點特別的醬才能完成這項工作。 – 2012-03-13 15:12:28