我搞了个一键打卡的脚本,双击后会弹出一个窗口显示运行消息。我想程序执行完自动关闭这个窗口。结果搜遍了百度,就找了这俩命令,结果鸟用没有。
有什么办法可以解决么
if name == "main":
chrome_options = Options()
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.set_window_size(1000,800)
# driver = webdriver.Chrome()
try:
driver.get("url")
## 省略打卡内容
finally:
print('------------------')
print('------打卡成功--------')
print('------------------')
os._exit(0)
sys.exit(0)
1
ruanimal 2020-07-14 10:23:44 +08:00
是 windows 吧,那个是系统控制台的窗口,在脚本里是关闭不了的。
可以把脚本的扩展名改成 pyw, 可以避免这个窗口 |
2
css3 2020-07-14 10:31:00 +08:00
|
4
dingwen07 2020-07-14 10:35:47 +08:00
黑框在执行完肯定会关掉的 除非启动方式不是给 python 传值
如果用了 gui 那就用 destroy 关掉窗体 |
5
princelai 2020-07-14 10:36:45 +08:00
再写个.bat ,调用你的脚本
|
6
Vhc 2020-07-14 10:37:24 +08:00
Python 脚本运行结束会自动关闭窗口的。你确定自己不是写了死循环?
|
7
shuax 2020-07-14 10:55:27 +08:00
改成 pyw
|
10
misaka19000 2020-07-14 11:11:09 +08:00
Windows 执行完毕 cmd 会自动关闭了
|
12
luxinfl OP @misaka19000 就是没关闭,所以才想问问咋回事
|
13
nonduality 2020-07-14 11:25:06 +08:00
你可以尝试获取窗口进程的 pid 号,在退出前 kill 之。
|
14
MerlinShieh 2020-07-14 11:35:57 +08:00
一般执行完就会关闭掉的,如果不行的话可以写个 bat 去执行脚本,再不行就获取 pid 然后 kill
|
15
luxinfl OP @MerlinShieh bat 试过了,打包成 exe 也试了,都不行。。感觉只能 kill 了。。
|
16
oahebky 2020-07-14 12:23:07 +08:00 via Android 6
无语,我就说早上第一次点卡这个帖子看着奇怪。理论上不可能发生的事情没法回答。
原来说的是调用 selenium 后「浏览器」窗口没有关闭的问题。 搞得神神秘秘的,selenium 不说,「浏览器」也不说;提问题,问题都描述不清楚。 |
17
bonfy 2020-07-14 13:14:52 +08:00
```python
options = webdriver.ChromeOptions() options.add_argument('headless') options.add_argument('--disable-gpu') executable_path = CONFIG.get('driverpath') driver = webdriver.Chrome( chrome_options=options, executable_path=executable_path ) ... driver.close() ``` 最好还是用 api 之类的吧 |
20
luxinfl OP @oahebky nono 不是浏览器窗口没关闭的问题。不过你硬要这么说也没啥问题,程序还没跑完,python 的命令行窗口还是一直在显示。现在在代码后面调用了 driver 的 quit 方法,程序就结束了,命令行窗口和浏览器就都关闭了
|
21
luxinfl OP @bonfy 我最后调用了 driver.quit()方法。网上呢,一直在说什么 os.exit(),system.exit(),根本就没啥用。
|
22
ungrown 2020-07-14 16:54:02 +08:00
@luxinfl #21
这不是网上提供的信息不对,也不是你使用网上信息的方法不对,是你弄错了导致问题的原因。 上面 @oahebky #16 提到浏览器没关闭导致流程被阻塞,不管其叙述是否覆盖了所有细节,思路没有错。 你在 python 进程里起了一个浏览器的 driver,那么这个 driver 不关闭的话,当然是要阻塞后续代码的,那两行 exit 的代码压根没有机会被运行。 如果你把 driver 退出的话,exit 就不需要了,实际上我们平时写的东西也很少去用 exit 的,因为代码跑完了,python 会自动退出,不需要 exit 。exit 一般用在特殊场景下,需要在程序运行过程中、尚未结束的时候退出,才会用到。 冰箱门还没关,却一个劲在那琢磨为什么冰箱里面的灯还不灭呢?我明明已经把要拿的东西拿出来了呀…… 所以你这属于基本概念不扎实导致的,因果链没建立,所以才会既不知道怎么来的也不明白怎么没的。 |