2014-12-02 18 views
0

僅在FIREFOX中發生:在之前的問題中,我遇到了SST 0.2.4與Selenium 2.44.0不兼容的問題。所以我降級到Selenium 2.43.0。我現在有一個我很困惑的新問題。我收到以下錯誤信息:AttributeError:'NoneType'對象在SST中執行時沒有屬性'name'Python

_StringException: Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\sst\cases.py", line 75, in setUp 
self.start_browser() 
    File "C:\Python27\lib\site-packages\sst\cases.py", line 107, in start_browser 
logger.debug('Browser started: %s' % (self.browser.name)) 
AttributeError: 'NoneType' object has no attribute 'name' 

,它是在庫/ SST文件夾中的文件cases.py引用的代碼如下:

def start_browser(self): 
    max_attempts = 5 
    for nb_attempts in range(1, max_attempts): 
     try: 
      logger.debug('Starting browser (attempt: %d)' % (nb_attempts,)) 
      self._start_browser() 
      break 
     except exceptions.WebDriverException: 
      if nb_attempts >= max_attempts: 
       raise 
    logger.debug('Browser started: %s' % (self.browser.name)) 

我的代碼如下所示:

import unittest 
from sst.actions import * 
from sst import cases, config, browsers 

class TestMyTest(cases.SSTTestCase): 

    def test_mytestcase_home_page(self): 
    config.results_directory = "C:/Users/Brenda/test/SST-Test-Project/results" 
    go_to('http://www.myhomepage.com') 
    assert_title_contains('My Home Page') 
    take_screenshot(filename='home_page.png',add_timestamp=True) 
    assert_element(tag='a', text='Log in') 

我一直在想這個解決方案很簡單,但我似乎無法圍繞它解決問題。

我還會添加註意事項,即在命令行中運行sst-run MySSTTest時,它看起來像試圖啓動瀏覽器而沒有成功。我的代碼在假期休息之前正在工作,此時它似乎已經破裂。

編輯3-Dec-2014:我想補充一點,我可以在Chrome和IE中成功執行測試。此問題僅適用於Windows 7環境中的Firefox。它在所有3個瀏覽器的Mac OS上成功執行。

回答

0

我認爲cases.py碼有可能當它運行_start_browser

方法

def _start_browser(self): 
    self.browser_factory.setup_for_test(self) 
    self.browser = self.browser_factory.browser() 

def start_browser(self): 
    max_attempts = 5 
    for nb_attempts in range(1, max_attempts): 
     try: 
      logger.debug('Starting browser (attempt: %d)' % (nb_attempts,)) 
      self._start_browser() 
      break 
     except exceptions.WebDriverException: 
      if nb_attempts >= max_attempts: 
       raise 
    logger.debug('Browser started: %s' % (self.browser.name)) 
+0

這是我的假設,但爲什麼?在之前執行測試之前,我不必做任何修改。 – Brenda 2014-12-02 16:17:23

0
  • 主要的問題不能得到瀏覽器對象:if nb_attempts >= max_attempts:沒有影響。 nb_attempts只上升到max_attempts-1。我會用continue並在else條款重新引發異常,而不是:

    logger.debug('Starting browser') 
    e = None 
    for _ in range(max_attempts): 
        try: 
         self._start_browser() 
         break 
        except exceptions.WebDriverException,e: 
         continue 
    else: 
        raise e 
    

    (「_」是未使用的變量成語)

  • 即使與修復,self.browser尚可None如果browser_factory.browser()返回None

+0

對於更改該特定代碼,我有點緊張,因爲它是SST附帶的開箱即用的文件。我不知道是否需要更新我自己的代碼來提取「name」屬性。如果是這樣,怎麼樣? – Brenda 2014-12-02 17:51:55

+0

我做了編輯,錯誤信息現在顯示爲'WebDriverException:Message:'無法連接到硒擴展,Firefox輸出:...' – Brenda 2014-12-02 18:50:22

+0

這隻顯示SST代碼的質量。也許你會用'unittest'與普通的'selenium'(例如http://selenium-python.readthedocs.org/en/latest/getting-started.html) - 我不明白SST有什麼他們沒有'噸。 – 2014-12-02 19:46:52