JBpeople 发表于 2021-7-3 09:18:12

双击.py程序闪退的问题

按照教程自己写了个可以简单进行网站查询的工具,在pycharm里能够正常运行,在资源管理器里双击文件就会闪退,希望大佬看看代码有没有什么问题{:10_243:}

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.lower() == 'bd' \
                or self.text.lower() == 'bg' \
                or self.text.lower() == 'cd':
            self.text = list(self.text)
            del self.text
            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.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.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.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.lower() == 'bd' \
                or text.lower() == 'bg' \
                or text.lower() == 'cd':
            Search(text).run()
            break
      else:
            print('识别错误~')
            print('请在搜索内容前加关键词(bd:百度;bg:必应;cd:CSDN)')

JBpeople 发表于 2021-7-3 17:45:55

谢谢各位大佬了,找到问题了,主要是pycharm使用比较多,安装模块也是使用pycharm里面的模块安装,要在其他地方运行程序需要在cmd里面再装一遍需要的模块{:10_266:}{:10_266:}

qiuyouzhi 发表于 2021-7-3 09:43:51

在 if __name__ == "__main__" 里 加一行 input()

杨哲予 发表于 2021-7-3 11:48:28

确定是IDLE吗

叼辣条闯世界 发表于 2021-7-3 11:50:41

qiuyouzhi 发表于 2021-7-3 09:43
在 if __name__ == "__main__" 里 加一行 input()

已经有一行text = input('请输入搜索内容:')了

qiuyouzhi 发表于 2021-7-3 11:58:01

叼辣条闯世界 发表于 2021-7-3 11:50
已经有一行了

额,你貌似并不理解我加这个 input 的意义是什么
它就是为了阻塞这个程序,让它不闪退,而不是接收输入

呆萌的小鱼985 发表于 2021-7-3 17:10:59

其实不是闪退,而是代码执行完毕后,程序会自动退出,所以你看到的就是一闪的画面.按楼上所说的,在最末尾加个input 可以理解为暂停程序,显示结果 类似于按任意键后退出 防止程序跑完后会自动退出

Kayko 发表于 2021-7-6 20:49:12

这样啊
页: [1]
查看完整版本: 双击.py程序闪退的问题