AssertionError - Selenium / Python

时间:2012-03-30 15:33:24

标签: python selenium

我正在用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'

我使用了错误的功能吗?

3 个答案:

答案 0 :(得分:0)

您的AssertionError表示您尝试过的断言(即第一个代码示例中的self.assertEqual(...))失败:

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

这个断言解释了字符串'Search by template name or category''Submitter Requests'不同,这是正确的......字符串 ,实际上是不同的。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

问题似乎是你没有选择要比较的正确元素。您基本上告诉程序匹配“按模板名称或类别搜索..”等于以下内容:

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

显然,内容是“提交者请求”,即不是您所期望的,因此测试失败(应该如此)。您可能没有使用该XPath查询选择正确的元素。也许CSS查询最好。您可以在Selenium documentation中阅读有关元素选择器的内容。

同时关注陷阱:Selenium返回的文本是Unicode object,您将它与字符串进行比较。对于特殊字符,这可能无法正常工作。