2017-12-11 3 views
1

python에서 chromedriver 및 pyinstaller exe에 대한 오류 메시지를 표시하지 않으려면 어떻게해야합니까?python에서 콘솔/cmd 오류 메시지를 표시하지 않으려면 어떻게합니까?

pyinstaller에서 chromedriver를 사용하고 실행하면 오류 메시지 목록이 나타납니다. 나는 그 (것)들을 제거하는 것을 시도하고있다 그러나 운 없음. 업데이트 : 머리없는 깃발이 많은 슬픔을 불러 일으키는 것 같습니다.

DevTools listening on ws://127.0.0.1:12386/devtools/browser/74743659-2c28-45fb-bab4-3836bb91f383 
[1213/214223.999:ERROR:service_manager.cc(157)] Connection InterfaceProviderSpec prevented service: content_renderer from binding interface: blink::mojom::ReportingServiceProxy exposed by: content_browser 
Improvement, now how to remove this in headless. 
Error messages: 
DevTools listening on ws://127.0.0.1:12386/devtools/browser/74743659-2c28-45fb-bab4-3836bb91f383 
[1213/214223.999:ERROR:service_manager.cc(157)] Connection InterfaceProviderSpec prevented service: content_renderer from binding interface: blink::mojom::ReportingServiceProxy exposed by: content_browser 
[1213/214223.999:INFO:CONSOLE(4)] "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.", source: http://centrebet.com/Scripts/jquery-1.6.4.min.js (4) 
[1213/214226.896:INFO:CONSOLE(42)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/8320572 (42) 
[1213/214226.899:INFO:CONSOLE(60)] "Uncaught ReferenceError: bs_auto_expand is not defined", source: http://centrebet.com/Sports/8320572 (60) 
[1213/214226.900:INFO:CONSOLE(65)] "Uncaught ReferenceError: gaPush is not defined", source: http://centrebet.com/Sports/8320572 (65) 
[1213/214227.987:INFO:CONSOLE(112)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (112) 
[1213/214227.988:INFO:CONSOLE(174)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (174) 
[1213/214227.989:INFO:CONSOLE(211)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (211) 
[1213/214227.991:INFO:CONSOLE(431)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (431) 
[1213/214227.991:INFO:CONSOLE(468)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (468) 
[1213/214227.998:INFO:CONSOLE(688)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (688) 
[1213/214227.998:INFO:CONSOLE(725)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (725) 
[1213/214228.001:INFO:CONSOLE(945)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (945) 
[1213/214228.001:INFO:CONSOLE(982)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (982) 
[1213/214228.002:INFO:CONSOLE(1202)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (1202) 
[1213/214228.003:INFO:CONSOLE(1239)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (1239) 
[1213/214228.004:INFO:CONSOLE(1459)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (1459) 
[1213/214228.004:INFO:CONSOLE(1496)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (1496) 
[1213/214228.005:INFO:CONSOLE(1716)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (1716) 
[1213/214228.005:INFO:CONSOLE(1753)] "Uncaught ReferenceError: $ is not defined", source: http://centrebet.com/Sports/71973868 (1753) 
[1213/214228.006:INFO:CONSOLE(1973)] "Uncaught ReferenceError: addStaticBubble is not defined", source: http://centrebet.com/Sports/71973868 (1973) 

코드 :

options = Options() 
options.add_argument('--headless') 
options.add_argument('--hide-scrollbars') 
options.add_argument('--disable-gpu') 
driver = webdriver.Chrome(chrome_options=options) 


url = "http://centrebet.com/" 
driver.get(url) 

def page_counter(): 
    for x in range(1000): 
     yield x 

count = page_counter() 
driver.get(url) 
sports = driver.find_element_by_id("accordionMenu1_ulSports") 
links = [url + link.get_attribute("onclick").replace("menulink('", "").replace("')", "") for link in sports.find_elements_by_xpath('//ul[@id="accordionMenu1_ulSports"]//li//ul//li//ul//li//a[starts-with(@onclick, "menulink")]')] 

links = dict((next(count) + 1, e) for e in links) 

desc_links = collections.OrderedDict(sorted(links.items(), reverse=True)) 
for key, value in desc_links.items(): 
    driver.get(value) 

내가 시도하는 것 :

logging.disable(logging.CRITICAL) 

logging.Logger.info = lambda *args, **kwargs: None 

sys.stderr = os.devnull 

logging.getLogger("requests").setLevel(logging.WARNING) 

@contextmanager 
def suppress_stdout(): 

    with open(os.devnull, "w") as devnull: 
     old_stdout = sys.stdout 
     sys.stdout = devnull 
     try: 
      yield 
     finally: 
      sys.stdout = old_stdout 


import warnings 

def fxn(): 
    warnings.warn("deprecated", DeprecationWarning) 

with warnings.catch_warnings(): 
    warnings.simplefilter("ignore") 
    fxn() 

오류 메시지 루프에 나타납니다. 아마도 해결할 수 재 작성 ...

+0

어떻게 이것이 Selenium과 관련이있을 수 있습니까? 내가 놓친 게 있니? – DebanjanB

+0

@DebanjanB 셀레늄 대본입니다 만, 태그를 제외하고 있습니다. –

+1

태그를 다시 가져 오십시오. 그 메시지는 python이 아닌 제어 된 브라우저에서 인쇄되므로 드라이버를 보는 것이 가장 쉬운 방법입니다. –

답변

0

로그는 Chrome에서 발행합니다. 당신은 치명적인로 설정된 로그 수준 크롬을 실행하여이를 해제 할 수 있습니다

options = Options() 
options.add_argument('--headless') 
options.add_argument('--hide-scrollbars') 
options.add_argument('--disable-gpu') 
options.add_argument("--log-level=3") # fatal 
driver = webdriver.Chrome(chrome_options=options) 

일부 메시지가 DevTools listening on ...처럼이 플래그에 의해 필터링되지 않습니다 있지만.

파일 설명자의 상속을 피하려면 selenium.webdriver.common.service.Service을 무시하고 subprocess.Popenclose_fds=True으로 호출해야합니다.

self.process = subprocess.Popen(cmd, env=self.env, 
           close_fds=True, 
           stdout=None, 
           stderr=None, 
           stdin=None) 
+0

이것은 devTools가 listen하고있는 def methodA (self, arg1, arg2)를 여전히 유지하는 것 외에는 잘 작동하는 경향이 있습니다 : self.process = subprocess.Popen –

+0

'subprocess.Popen'을 오버라이드하려면 다음과 같은 소스 코드를 업데이트해야합니다. 시스템의 셀레늄 :'PythonFolder \ Lib \ site-packages \ selenium \ webdriver \ common \ service.py'. 당신은 ** 당신의 스크립트에서 그것을'def methodA (self, arg1, arg2) : self.process = subprocess.Popen'로 재정의 할 수 없습니다. –

+0

어 참조. 불행히도 이것은 나를 위해 그것을 제거하지 않았다. 남아있는 Devtools –

0

이제 문제는 오류 메시지를 제거하고 억제 메시지를 관련 chromedriver 로깅을 전환하려면 드라이버를

을 크롬을 사용하는 방법입니다 DesiredCapabilities

options = Options() 
options.add_argument('--headless') 
options.add_argument('--hide-scrollbars') 
options.add_argument('--disable-gpu') 

dc = DesiredCapabilities.CHROME 
dc['loggingPrefs'] = {'driver': 'OFF', 'server': 'OFF', 'browser': 'OFF'} 

driver = webdriver.Chrome(chrome_options=options, desired_capabilities=dc) 

여기를 참조하십시오. possible loggingPrefs values.

+0

ws : //에서 듣고있는 DevTools를 사용하지 않도록 설정하는 방법이 있습니까? 아니면이 파일이 cmd에 포함되어 있습니까? –

1

나는 다음과 같은 문제점을 가지고 있으며 다음과 같은 결론을 얻었다.

파이썬 스크립트에서 셀렌 모듈을 사용하여 chromedriver.exe을 열고 일부 온라인 다운로드를 자동화했습니다. BAT 파일을 사용하여 스크립트를 실행합니다.

나는 BAT 파일을 실행 원래 경우 는, 크롬은 개방되고 파일을 어디에 다운로드하지만, 명령 줄 내가이 문제를 가지고하는 방법은 박쥐 파일에 있었다 DevTools listening on ...

내가 추가 로그 문에 교수형

taskkill /im chromedriver.exe /f 

라인

그래서 내 BAT 파일이

python python_script.py 
taskkill /im chromedriver.exe /f 
로그 문이 여전히 나타납니다

하지만을 죽이는 모습실행을 종료 것으로 보인다.

관련 문제