【发布时间】:2020-05-31 12:39:01
【问题描述】:
我已经编写了一些使用 Selenium 的单元测试并为其创建了 Tkinter GUI。
script.py 是:
from selenium import webdriver
import unittest
class LaunchChrome(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome(r"C:\Users\USERNAME\PycharmProjects\First\Drivers\chromedriver.exe")
cls.driver.maximize_window()
cls.driver.get('https://facebook.com')
if __name__ == '__main__':
unittest.main()
interface.py 是:
from tkinter import Button
from tkinter.ttk import *
import unittest
from ex import LaunchChrome
class HomeApplication:
def init_page(self):
self.buStart = Button(self, text="Start", width=60)
self.buStart.grid(row=4, column=0, columnspan=3)
self.buStart.config(command=self.start_app)
def run(self):
Launch_Chrome = unittest.TestLoader().loadTestsFromTestCase(LaunchChrome)
test_suite = unittest.TestSuite([Launch_Chrome])
unittest.TextTestRunner(verbosity=2).run(test_suite)
def start_app(self):
print("run")
self.run()
打开 GUI 并单击“开始”按钮后,单元测试工作正常,但 GUI 停止响应(无响应):
这段代码如何使用多处理?
【问题讨论】:
-
当你运行 Selenium 脚本时,你会在脚本执行时暂停 Tkinter 主循环,因此,窗口没有响应。您是否尝试过使用线程?
-
我在函数 start_app 中添加了这个代码 threading.Thread(target=self.run()) 但不是同样的问题
-
什么是最好的线程或多处理,我看到Python doc建议使用多处理
-
如果threading.Thread(target=self.run())改为threading.Thread(target=self.run),脚本不启动
-
我添加了同样的问题兄弟
标签: python python-3.x user-interface tkinter