结合硒测试课程和Tkinter

时间:2018-09-26 15:32:25

标签: python selenium-webdriver tkinter ui-automation

这是我第一次尝试使用Tkinter插件,我几乎找不到什么教程。到目前为止,我所看到的所有答案都将一个类放到了您要构建的py文件中,但是我有大量的测试,这些测试已经编译成可运行许多单独测试的Test类。所有的测试都会运行,在尝试添加到ui之前不会遇到任何错误。

我希望能够通过单击一个按钮来运行每个套件。我的问题似乎是我在某些地方缺少了一个步骤,但是单击按钮时没有得到任何错误或动作,但是单击并关闭ui窗口后却出现了错误。我应该指出,导入设置文件(包含大多数webdriver导入)也无济于事。我收到同样的错误。

跟踪:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python37\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:\Python37\lib\unittest\case.py", line 663, in __call__
return self.run(*args, **kwds)
File "C:\Python37\lib\unittest\case.py", line 590, in run
testMethod = getattr(self, self._testMethodName)
AttributeError: 'Test' object has no attribute 'runTest'

我的用户界面代码:

import sys, os, tkinter, TESTadmin
top = tkinter.Tk()
a = TESTadmin.Test()
B = tkinter.Button(top, text= "Test Window", command=a )
B.pack()
top.mainloop()

为清楚起见,我的主要测试文件是

from helpers.settings import *
from pieces import adminLogin, adminLogout, docs


class Test(unittest.TestCase):
def setUp(self):

    # Maximize Window (remove quotes to use)
    '''sel.maximize_window()'''

    self.browser = webdriver.Firefox()
    self.browser.get("https://mywebsite.net")
    # We instantiate and start the browser

def testCases(self):# Add Tests Below
    #log in to admin side
    login = adminLogin.AdminLogin.do(self)
    #docs page
    docpage = docs.Docs.do(self)
    #log out
    logout = adminLogout.Logout.do(self)
    if G.log:
        for k in G.log.items():
            print(k)

### Uncomment to close browser after test ###   
def tearDown(self):
    self.browser.close()

if __name__ == "__main__":
    unittest.main()

1 个答案:

答案 0 :(得分:0)

事实证明,我认为答案很简单。

此行:

def testCases(self):

需要阅读:

def runTest(self): 

在更改之后,每件事都会正常运行。

我的困惑是因为最初在构建这些测试时,我遵循此处的说明-> https://selenium-python.readthedocs.io/ 他们向您展示了如何使用testCases()方法,并且可以正常工作!只是不是为了上课。我不知道该功能放在何处,更不用说Webdriver除了我正在使用的功能以外,还具有内置功能。<​​/ p>