采用
#!/usr/bin/python
# -*- coding: utf-8 -*-
import platform
import os
name = "Google Chrome/Chromium"
def find_path():
"""
find the chrome executable path on Windows, Linux/OpenBSD, Mac or Unknown system.
"""
if platform.system() == "Windows":
return _find_chrome_win()
elif platform.system() == "Darwin": # Mac OS
return _find_chrome_mac()
elif platform.system() == "Linux" or platform.system() == "OpenBSD":
return _find_chrome_linux()
else:
try:
return _find_chrome_linux()
except:
try:
return _find_chrome_mac()
except:
try:
return _find_chrome_win()
except:
return None
def _find_chrome_mac():
paths = [ # mac os chrome path list
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
"/Applications/Chromium.app/Contents/MacOS/Chromium",
"/usr/bin/google-chrome-stable",
"/usr/bin/google-chrome",
"/usr/bin/chromium",
"/usr/bin/chromium-browser",
]
chrome_path = None
for path in paths: # loop through paths
if os.path.exists(path):
chrome_path = path
if chrome_path != None:
return chrome_path
else: # use which command to find chrome
for browser in ("google-chrome", "chrome", "chromium", "chromium-browser"):
a = os.popen("which " + browser).read()
if a == "":
pass
else:
return a[:-1]
return None
def _find_chrome_linux():
paths = [
"/usr/bin/google-chrome-stable", # linux chrome path list
"/usr/bin/google-chrome",
"/usr/bin/chromium",
"/usr/bin/chromium-browser",
"/snap/bin/chromium",
]
chrome_path = None
for path in paths:
if os.path.exists(path):
chrome_path = path
if chrome_path != None:
return chrome_path
else: # use which command to find chrome
for browser in ("google-chrome", "chrome", "chromium", "chromium-browser"):
a = os.popen("which " + browser).read()
if a == "":
pass
else:
return a[:-1]
return None
def _find_chrome_win():
import winreg as reg # import registry
chrome_path = None
reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe"
for install_type in (reg.HKEY_CURRENT_USER, reg.HKEY_LOCAL_MACHINE):
try:
reg_key = reg.OpenKey(install_type, reg_path, 0, reg.KEY_READ)
chrome_path = reg.QueryValue(reg_key, None)
reg_key.Close()
if not os.path.isfile(chrome_path):
continue
except WindowsError:
chrome_path = None
else:
break
for browser in ("google-chrome", "chrome", "chromium", "chromium-browser"):
a = os.popen("where " + browser).read()
if a == "":
pass
else:
chrome_path = a[:-1]
return chrome_path
chrome_path = find_path()
if not chrome_path:
raise Exception("No chrome")
class ChromeView:
def __init__(self, url="data:text/html,<h1>DicksonUI</h1>", options=[]):
cmd = chrome_path
for option in options:
cmd += " "
cmd += option
cmd += " --incognito"
cmd += " --new-window"
cmd += ' --app="'
cmd += url + '"'
os.popen(cmd)
def version(self, path):
try:
v = os.popen(find_path() + " --version").read()
v2 = v[v.find(" ") + 1 :]
return int(v2[: v2.find(".")])
except:
return None
def is_chromium(self, path):
try:
if os.popen(path + " --version").read().startswith("Chromium"):
return True
else:
return False
except:
return None
ChromeView("https://www.google.com")