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

时间:2019-02-19 19:23:58

标签: selenium-webdriver robotframework geckodriver

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

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

当打印出用于Open Browser的功能时,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

谢谢, 汤姆

1 个答案:

答案 0 :(得分: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

希望这会有所帮助!