繁体   English   中英

AttributeError:在SST Python中执行时,“ NoneType”对象没有属性“名称”

[英]AttributeError: 'NoneType' object has no attribute 'name' while executing in SST Python

仅限这种情况:在上一个问题中,我遇到了SST 0.2.4与Selenium 2.44.0不兼容的问题。 所以我降级到Selenium 2.43.0。 我现在有一个新的问题,我对此感到困惑。 我收到以下错误消息:

_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'

它在Lib / SST文件夹中的case.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时,似乎正在尝试启动浏览器而没有成功。 我的代码在节假日之前工作,那时好像已经坏了。

修改日期:2014年12月3日:我想补充一点,就是我可以在Chrome和IE中成功执行测试。 仅在Windows 7环境中,此问题与Firefox有关。 它已在Mac OS的所有3种浏览器中成功执行。

我认为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))
  • 主要问题: 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM