鱼C论坛

 找回密码
 立即注册
查看: 4367|回复: 7

双击.py程序闪退的问题

[复制链接]
发表于 2021-7-3 09:18:12 | 显示全部楼层 |阅读模式
20鱼币
按照教程自己写了个可以简单进行网站查询的工具,在pycharm里能够正常运行,在资源管理器里双击文件就会闪退,希望大佬看看代码有没有什么问题
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class Search:
    def __init__(self, text):
        self.text = text
        self.driver = None

    def open_web(self):
        global driver
        driver = webdriver.Edge(r'C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe')
        driver.maximize_window()
        self.driver = driver

    def text_solve(self):
        if self.text[0:2].lower() == 'bd' \
                or self.text[0:2].lower() == 'bg' \
                or self.text[0:2].lower() == 'cd':
            self.text = list(self.text)
            del self.text[0:2]
            self.text = ''.join(self.text)

    def search_web(self):
        bd_url = 'https://www.baidu.com/'
        bing_url = 'https://cn.bing.com/?FORM=Z9FD1'
        csdn_url = 'https://www.csdn.net/?spm=1000.2115.3001.5359'
        if self.text[0:2].lower() == 'bd':
            self.driver.get(bd_url)
            self.text_solve()
            self.driver.find_element_by_xpath('//*[@id="kw"]').send_keys(self.text)
            self.driver.find_element_by_xpath('//*[@id="kw"]').send_keys(Keys.ENTER)
        elif self.text[0:2].lower() == 'bg':
            self.driver.get(bing_url)
            self.text_solve()
            self.driver.find_element_by_xpath('//*[@id="sb_form_q"]').send_keys(self.text)
            self.driver.find_element_by_xpath('//*[@id="sb_form_q"]').send_keys(Keys.ENTER)
        elif self.text[0:2].lower() == 'cd':
            self.driver.get(csdn_url)
            self.text_solve()
            self.driver.find_element_by_xpath('//*[@id="toolbar-search-input"]').send_keys(self.text)
            self.driver.find_element_by_xpath('//*[@id="toolbar-search-input"]').send_keys(Keys.ENTER)

    def run(self):
        self.open_web()
        self.search_web()


if __name__ == '__main__':
    while True:
        text = input('请输入搜索内容:')
        if text[0:2].lower() == 'bd' \
                or text[0:2].lower() == 'bg' \
                or text[0:2].lower() == 'cd':
            Search(text).run()
            break
        else:
            print('识别错误~')
            print('请在搜索内容前加关键词(bd:百度;bg:必应;cd:CSDN)')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-3 17:45:55 | 显示全部楼层
谢谢各位大佬了,找到问题了,主要是pycharm使用比较多,安装模块也是使用pycharm里面的模块安装,要在其他地方运行程序需要在cmd里面再装一遍需要的模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 09:43:51 | 显示全部楼层
在 if __name__ == "__main__" 里 加一行 input()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 11:48:28 | 显示全部楼层
确定是IDLE吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 11:50:41 | 显示全部楼层
qiuyouzhi 发表于 2021-7-3 09:43
在 if __name__ == "__main__" 里 加一行 input()

已经有一行
text = input('请输入搜索内容:')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 11:58:01 | 显示全部楼层

额,你貌似并不理解我加这个 input 的意义是什么
它就是为了阻塞这个程序,让它不闪退,而不是接收输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 17:10:59 | 显示全部楼层
其实不是闪退,而是代码执行完毕后,程序会自动退出,所以你看到的就是一闪的画面.按楼上所说的,在最末尾加个input 可以理解为暂停程序,显示结果 类似于按任意键后退出 防止程序跑完后会自动退出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-6 20:49:12 | 显示全部楼层
这样啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-8 04:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表