2013-07-18 154 views
0

Page对象框架运行以下的PyUnit测试:类型错误: 'NoneType' 对象不是可迭代,使用硒/ Appium

import unittest #imports unit test/ability to run as pyunit test 
from page_objects.webdriver_wrapper import webdriver_wrapper 
from page_objects.home import home 
from page_objects.inbook import inbook 
from page_objects.myebooks import myebooks 
from page_objects.login import login 
import time 

class regression(unittest.TestCase): 

    def regression(self, webd_wrap): 
     page_login = login(webd_wrap) 
     page_login.secure_login() 


    def test_regression(self): #running x as a unit test 
     for browser in webdriver_wrapper().setUp(): 
      self.regression(webdriver_wrapper(browser)) 


print "Module Complete", __name__ 
if __name__ == "__main__": 
    unittest.main() 

我收到以下错误:

ERROR: test_regression (mobile_testing.regression_test.regression) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/Zola/Documents/workspace/com.zolamobile.eviltest/mobile_testing/regression_test.py", line 24, in test_regression 
    for setUp in webdriver_wrapper().setUp(): 
TypeError: 'NoneType' object is not iterable 

webdriver_wrapper是一个库模块,包含setUp以在iOS设备上的unittest上运行。设置是这样的:

def setUp(self): 
     # set up appium 
     success = True 
     app = "com.zolabooks.zolareader" 
     app = os.path.abspath(app) 
     self.driver = webdriver.Remote(
      command_executor='http://127.0.0.1:4723/wd/hub', 
      desired_capabilities={ 
       'browserName': 'iOS', 
       'platform': 'Mac', 
       'version': '6.1', 
       'ipa': app 
      }) 
     self._values = [] 

我试图让这个使用页面对象模型框架的工作,使在页面上的元素可以被抽象。

编辑:使用硒的浏览器,而不是iOS的这是工作代码:

def test_addtolist_notsignedin_modal(self): #running x as a unit test 
     for browser in webdriver_wrapper._browsers: 
      self.add_to_list_notsignedin_modal_test(webdriver_wrapper(browser)) 

凡_browsers被定义为:

_browsers = ["chrome", "firefox"] 

def open_chrome(self): 
     self._driver = webdriver.Chrome('/Users/Jay/Downloads/chromedriver') 
     self._driver.implicitly_wait(10) 
     self.wait = WebDriverWait(self._driver, 10) 

    def open_firefox(self): 
     self._driver = webdriver.Firefox() 
     self._driver.implicitly_wait(10) 
     self.wait = WebDriverWait(self._driver, 10) 
+0

是不是应该设置返回的东西? – hivert

回答

0

你试图遍历从返回的值setUp()方法:

for browser in webdriver_wrapper().setUp(): 

(错误消息说for setUp in webdriver_wrapper().setUp(): ...不知道为什么不同。您粘贴的代码可能与您实际运行的代码不同。但是原因是一样的无论如何。)

问题是setUp()不返回任何东西,这意味着它返回None。如错误消息所示,None不可迭代。

目前还不清楚我应该返回什么setUp()。显然,列表或迭代器,但是什么?浏览器?设置?我没有看到任何类似的东西。

+0

请参阅我的编辑了解更多信息。 – jsflax

+0

请勿在注释中张贴代码;这是不可理解的。 – kindall

+0

对不起,我刚编辑提供一个工作示例。 – jsflax

0

setUp函数没有返回值(即:无),然后你写的:

for browser in webdriver_wrapper().setUp(): 

这是应该通过setUp结果迭代......一个无法通过None迭代。至少返回空列表。

相关问题