django-selenium TypeError:'str'对象不可调用

时间:2017-04-19 15:19:41

标签: django selenium

对点击下拉菜单进行简单测试,看看菜单是否显示。

    dropdown_user = self.browser.find_element_by_id('dropdown-user')
    dropdown_user.click()
    expanded = dropdown_user.get_attribute("aria-expanded")
    self.assertTrue= (expanded)
    settings = self.browser.find_element_by_id('dropdown-user-settings')
    self.assertTrue(settings.is_displayed())

运行测试时给我这个错误。我不知道为什么设置是str。

   self.assertTrue(settings.is_displayed())
   TypeError: 'str' object is not callable

1 个答案:

答案 0 :(得分:2)

我无法发表评论(没有足够的代表)或者我会 - 你能发布整个堆栈跟踪吗? self.assertTrue= (expanded)行看起来可能会导致问题。

编辑:我认为您将变量expanded的值分配给self.assertTrue,然后当您尝试调用self.assertTrue时,您尝试调用字符串,而不是一个功能。删除行self.assertTrue=(expanded)并将其替换为self.assertEqual(expanded, 'true')

编辑2以按要求更深入地解释:

如果您的下拉列表已展开,则expanded的值为字符串 - 可能为“true”。

self.assertTrue=(expanded)与写self.assertTrue=expanded是一样的(在本例中)。您将变量expanded(它是一个字符串)的值赋给变量self.assertEqual - 它不再是一个函数,它是一个字符串!

self.assertTrue(True) # fine
self.assertTrue=('Woops!') # the value of self.assertTrue is now the 
                           # string 'Whoops!'
print(self.assertTrue)
>'Woops!'
self.assertTrue(True) # you're trying to call a string here
> TypeError: 'str' object is not callable

在python中,没有什么能阻止你为任何变量分配任何类型,因为它是dynamically typed