试图从Geckodriver获取TRACE级别的日志记录

问题描述 投票:0回答:1

我正在尝试从gecko驱动程序中获取跟踪日志记录信息,以便调试我们在迁移到更新版本的Python,Robot Framework,Selenium,Firefox时遇到的一些问题。

请参阅下面的DEBUG机器人输出,我正在设置包含日志级别参数的功能,作为moz:firefoxOptions的一部分。

当打开浏览器打开浏览器的功能时,moz:firefoxOptions值已被配置文件信息替换,因此我永远不会设置跟踪。

20190219 13:07:22.461 - INFO - {'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': True, 'moz:firefoxOptions': {'prefs': {'log': {'level': 'trace'}}, 'args': ['-headless', '-profile', '/tmp/tmpimda__f2']}, 'binary': '/usr/bin/firefox'}

20190219 13:07:22.461 - INFO - +--- END KW: BuiltIn.Log (1)

20190219 13:07:22.461 - INFO - +--- START KW: CustomLib.AdminClass.Open Browser [ ${LOGIN URL} | ${BROWSER} | desired_capabilities=${dc} | ff_profile_dir=${profile} ]

20190219 13:07:22.462 - INFO - Opening browser 'Firefox' to base url 'https://HOST:PORT/bmmadmin/login.jsp'.

20190219 13:07:22.480 - DEBUG - POST http://127.0.0.1:38132/session {"capabilities": {"firstMatch": [{}], "alwaysMatch": {"browserName": "firefox", "acceptInsecureCerts": true, "moz:firefoxOptions": {"profile": "UEsDBBQAAAAIAOtoU04+3NKsfgMAAM0MAAAHAAAAdXNlci5qc6VWTW/UMBC98ytQTyCx1rbABU6lFAkJUcSq4mg59mTjrmMbe7zp/nvGyaYsbb6AWz7e89hvZt44RQjcByhfnBXBNfTGlKtZo61yDVOp9gysKAyos1fPMSR4+f5ZesoxAiGEZE/ApTBxBG2hQVGwFAzhzkThEr4rjLC7sym8F1tYtn5EETB5lhmEXE+jKlfDEblgL49Z3O3p5FoBqyM6266it9YFGFmAPqkb+6MVOJ6vmbYY3O33L9Phc1Jqcc9lFSgwjzJoj5wU56jrHPT1epiwDBnAu4BcGMPvIod7CR61s3Ew6XdiL7plmetgLFau+Wyv6NEZGCRZwMaFHZOCKHtY5XjCrAiw13ImrxFkChoPTMa+HEeAj5PTgJFZr9lSm2IyoZTO5xQzizRQqECHC1zIrCBPlNsUERSXEHBYzRNSjClHfCBp+gBhhtXpwa3IsnLYgx0JJLxnySvqVCYSumEFT0CLWk3p6I04gLo+X2++OqRcEuHNCNg11jihqDAtaRzasvlRgd1k9bXdTse6vv1yyfp2m7SjFvmadVmYsy5td1THYKnsycS6JF/MYcmSOo8cB7uyJPxIpfagAEJlZQBB0k4/6RDxkrSQI230YEOihPaZVFtoiqeMWphGhKV2CiLI6lgWc1BTxuRzc/f2PuajEGO2DiSnJBXayi/J27gMIlYzUSowhskK5O4jlCIZ/ND9mabRDImMjm1v7JVxceYoJ+gbyvgwmBQRnXdmVSsQBqvunS1ytgl+8rlVrv+R3Ucvc0F9T3+/feO22/xRdp7+F/vwzmh5YPnjJhW1bvP8v/xv7cfL3w09tAzs0TkTGTmEC8eNT15f8ugjB2sNtG1rRXPGbnlWfjhG9gjbFm5roh878kYSO7vu+XoUXhgnd0ZHnK6IE0Zb4Feu9mTthTZ5AFq9rdAcZqlLLPwp3JJ/l4fb0UY6GfxTqvajvnP51dEHVzRiMcXhlXtKhUjXtkrH6rDKvz3NxJUBu8VsCRdv3/5J65emqUX5MMY1vDhw1XnC4N48WYzHmLub104Js/DmUWoD9MRc0NQWvKvRfJmawUcMWiJ/TBsKlW+NlqywhrqAsGlfR+TKZb7TyI6y9eP0WMqDB+8pCIYiYDiwTor25Bdz2EmRnsID3LXjbHAn916T7VO2WD4y1QS5PzF+Jh3GIvymNJWmMLmLBhi/AFBLAQIUAxQAAAAIAOtoU04+3NKsfgMAAM0MAAAHAAAAAAAAAAAAAACkgQAAAAB1c2VyLmpzUEsFBgAAAAABAAEANQAAAKMDAAAAAA=="}}}, "desiredCapabilities": {"browserName": "firefox", "acceptInsecureCerts": true, "moz:firefoxOptions": {"profile": "UEsDBBQAAAAIAOtoU04+3NKsfgMAAM0MAAAHAAAAdXNlci5qc6VWTW/UMBC98ytQTyCx1rbABU6lFAkJUcSq4mg59mTjrmMbe7zp/nvGyaYsbb6AWz7e89hvZt44RQjcByhfnBXBNfTGlKtZo61yDVOp9gysKAyos1fPMSR4+f5ZesoxAiGEZE/ApTBxBG2hQVGwFAzhzkThEr4rjLC7sym8F1tYtn5EETB5lhmEXE+jKlfDEblgL49Z3O3p5FoBqyM6266it9YFGFmAPqkb+6MVOJ6vmbYY3O33L9Phc1Jqcc9lFSgwjzJoj5wU56jrHPT1epiwDBnAu4BcGMPvIod7CR61s3Ew6XdiL7plmetgLFau+Wyv6NEZGCRZwMaFHZOCKHtY5XjCrAiw13ImrxFkChoPTMa+HEeAj5PTgJFZr9lSm2IyoZTO5xQzizRQqECHC1zIrCBPlNsUERSXEHBYzRNSjClHfCBp+gBhhtXpwa3IsnLYgx0JJLxnySvqVCYSumEFT0CLWk3p6I04gLo+X2++OqRcEuHNCNg11jihqDAtaRzasvlRgd1k9bXdTse6vv1yyfp2m7SjFvmadVmYsy5td1THYKnsycS6JF/MYcmSOo8cB7uyJPxIpfagAEJlZQBB0k4/6RDxkrSQI230YEOihPaZVFtoiqeMWphGhKV2CiLI6lgWc1BTxuRzc/f2PuajEGO2DiSnJBXayi/J27gMIlYzUSowhskK5O4jlCIZ/ND9mabRDImMjm1v7JVxceYoJ+gbyvgwmBQRnXdmVSsQBqvunS1ytgl+8rlVrv+R3Ucvc0F9T3+/feO22/xRdp7+F/vwzmh5YPnjJhW1bvP8v/xv7cfL3w09tAzs0TkTGTmEC8eNT15f8ugjB2sNtG1rRXPGbnlWfjhG9gjbFm5roh878kYSO7vu+XoUXhgnd0ZHnK6IE0Zb4Feu9mTthTZ5AFq9rdAcZqlLLPwp3JJ/l4fb0UY6GfxTqvajvnP51dEHVzRiMcXhlXtKhUjXtkrH6rDKvz3NxJUBu8VsCRdv3/5J65emqUX5MMY1vDhw1XnC4N48WYzHmLub104Js/DmUWoD9MRc0NQWvKvRfJmawUcMWiJ/TBsKlW+NlqywhrqAsGlfR+TKZb7TyI6y9eP0WMqDB+8pCIYiYDiwTor25Bdz2EmRnsID3LXjbHAn916T7VO2WD4y1QS5PzF+Jh3GIvymNJWmMLmLBhi/AFBLAQIUAxQAAAAIAOtoU04+3NKsfgMAAM0MAAAHAAAAAAAAAAAAAACkgQAAAAB1c2VyLmpzUEsFBgAAAAABAAEANQAAAKMDAAAAAA=="}, "binary": "/usr/bin/firefox", "marionette": true}}

任何人都有任何想法,我可能在这里做错了吗?和/或从geckodriver获取跟踪记录的一些替代方法?

顺便说一句:moz:firefoxOptions我设置的可能不正确,它们只是我尝试过的最新组合,但我不知道在我设置的选项实际发送到firefox之前会起什么作用。

Environment:

Python 3.6.3    
geckodriver 0.24.0 ( 2019-01-28)    
Mozilla Firefox 60.4.0

PIP:

requests (2.21.0)    
robotframework (3.1.1)    
robotframework-requests (0.5.0)    
robotframework-selenium2library (3.0.0)    
robotframework-seleniumlibrary (3.3.1)    
selenium (3.141.0)    
setuptools (40.8.0)    
urllib3 (1.24.1)


ROBOT:

Open Browser To Login Page
    ${dc}=    CustomLib.Get Desired Capabilities    ${BROWSER}    
    Set To Dictionary   ${dc}   
    ...                 binary                         ${PATH TO MARIONETTE}
    Log    ${dc}    
    ${profile}=    CustomLib.Create FF Profile
    Open Browser    ${LOGIN URL}    ${BROWSER}    desired_capabilities=${dc}    ff_profile_dir=${profile}


PYTHON:

@keyword
def get_desired_capabilities(browser):
        _capabilities = {'ff' : DesiredCapabilities.FIREFOX,
                    'firefox' : DesiredCapabilities.FIREFOX
                    } 

        browserKey = str(browser).lower()
        desired = _capabilities[browserKey]
        BuiltIn().log("get_desired_capabilities B4 :" + str(desired))
        #THIS IS ASSUMING FIREFOX
        desired['marionette'] = True
        desired['acceptSslCerts'] = True
        desired['ignoreProtectedModeSettings'] = True
        desired['headless'] = True
        desired['moz:webdriverClick'] = True
        desired['moz:firefoxOptions'] = {'log':{'level':'trace'}, 'args':['-headless']}
        #desired['moz:firefoxOptions']['log'] = {'level':'trace'}
        #desired['moz:firefoxOptions']['args'] = ['-headless']
        BuiltIn().log("get_desired_capabilities returning :" + str(desired))
        return desired

@keyword
def create_ff_download_profile(path):
        from selenium import webdriver
        BuiltIn().log('PATH: ' + path)
        fp = webdriver.FirefoxProfile()
        fp.set_preference("browser.download.folderList", 2)
        fp.set_preference("browser.download.manager.showWhenStarting", False)
        fp.set_preference("browser.helperApps.alwaysAsk.force", False);
        fp.set_preference("browser.helperApps.neverAsk.saveToDisk", 'text/xml,text/plain,application/octet-stream')
        fp.set_preference("browser.download.dir", path)      
        fp.update_preferences()     
        return fp.path

谢谢,汤姆

selenium-webdriver robotframework geckodriver
1个回答
2
投票

这就是我在Firefox中将日志级别设置为跟踪的方法:

*** Settings ***
Library    SeleniumLibrary

*** Keywords ***
    ${options}=    Evaluate  sys.modules['selenium.webdriver.firefox.options'].Options()    sys
    ${options.log.level}=    Set Variable    trace
    ${driver}=    Create Webdriver    Firefox    options=${options}
    Go To    https://www.google.com

它基本上遵循firefox docs的这个python模式并将其转换为Robotframework

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.