2012-03-30 19 views
0

我正在用Selenium创建一个Python脚本。我想运行一个特定的测试,在页面加载时检查文本框的默认文本。下面是我的代码.......AssertionError - Selenium/Python

try: 
        self.assertEqual("Search by template name or category..", sel.get_text("//table[@id='pluginToolbarButton_forms']/tbody/tr[2]/td[2]/em")) 
        logging.info('  PASS: text box text is correct') 
       except Exception: 
        logging.exception('  FAIL: text box text is incorrect') 

这里是我的错误......

  self.assertEqual("Search by template name or category..", sel.get_text("//table[@id='pluginToolbarButton_forms']/tbody/tr[2]/td[2]/em")) 
    File "C:\Python27\lib\unittest\case.py", line 509, in assertEqual 
    assertion_func(first, second, msg=msg) 
    File "C:\Python27\lib\unittest\case.py", line 502, in _baseAssertEqual 
    raise self.failureException(msg) 
AssertionError: 'Search by template name or category..' != u'Submitter Requests' 

我使用了错误的功能?

回答

0

AssertionError指出您尝试(这是self.assertEqual(...)在你的第一个代码示例)断言失败:

AssertionError: 'Search by template name or category..' != u'Submitter Requests' 

这种说法解释说,这个字符串'Search by template name or category'不同于'Submitter Requests',这是正确的?字符串都是,实际上不同。

我会检查你的第二个参数self.assertEqual,并确保你选择了正确的功能。

0

这看起来像你正在使用正确的功能,但也许你没有以正确的方式运行你的测试。

0

问题似乎是你没有选择正确的元素进行比较。你基本上是告诉程序匹配“的模板名称或类别搜索。”等于无论是在内容:

//table[@id='pluginToolbarButton_forms']/tbody/tr[2]/td[2]/em 

显然,内容是“发布者的要求”,即不是你会期望,所以测试失败(如它应该)。您可能不会使用该XPath查询选择正确的元素。也许一个CSS查询会是最好的。您可以阅读有关Selenium documentation中的元素选择器。

请继续关注以下错误:由Selenium返回的文本是Unicode object,并且您将它与字符串进行比较。这可能无法按预期在特殊字符上工作。