Robot Framework 使用 Robot Framework/selenium 获取后台调用

2024-01-18

我正在使用 selenium 测试一个 Web 应用程序,我想检查的是是否有在后台完成的调用(post、get)。例如我加载 google.com,在开发人员选项中我可以看到它执行了一些请求。

我调查了文档 https://github.com/robotframework/SeleniumLibrary/对于 Robot Framework 中的 selenium 库,但找不到选项。 是否可以完成请求? 我还发现硒线 https://github.com/wkeeling/selenium-wire这正是我想要的,但是在他们使用驱动程序对象的所有示例中,是否可以获取 Robot Framework/selenium 使用的驱动程序对象?

e.g.

*** Settings ***
Documentation     Simple example using SeleniumLibrary.
Library           SeleniumLibrary

*** Variables ***
${LOGIN URL}      http://localhost:7272
${BROWSER}        Chrome

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    Get call to some-site should be done <---- what i want.
    [Teardown]    Close Browser

*** Keywords ***
Open Browser To Login Page
    Open Browser    ${LOGIN URL}    ${BROWSER}
    Title Should Be    Login Page

Input Username
    [Arguments]    ${username}
    Input Text    username_field    ${username}

Input Password
    [Arguments]    ${password}
    Input Text    password_field    ${password}

Submit Credentials
    Click Button    login_button

Welcome Page Should Be Open
    Title Should Be    Welcome Page

我根据 Bence Kaulics 的回答尝试了以下内容

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

def get_logs2(driver):
# enable browser logging
    #d = DesiredCapabilities.CHROME
    #d['goog:loggingPrefs'] = { 'browser':'ALL' }
    #driver = webdriver.Chrome(desired_capabilities=d)

    # load the desired webpage
    #driver.get('http://34.90.50.21/')
    #driver.get(driver.current_url)
    a = driver.get_log('browser')

    # print messages
    for entry in driver.get_log('browser'):
        print(entry)
    print("finished")
    return a

我做的机器人部分是:

*** Keywords ***
   Get Logs2
        [Arguments]     ${arg1}
        ${seleniumlib}=    Get Library Instance    SeleniumLibrary
        Log    ${seleniumlib._drivers.active_drivers}[0]
        Get Logs2   ${seleniumlib._drivers.active_drivers}[0]

但无济于事


In the 硒库/init.py https://github.com/robotframework/SeleniumLibrary/blob/master/src/SeleniumLibrary/__init__.py第487行,你可以看到SeleniumLibrary有一个名为_drivers 这是一个实例class WebDriverCache。如果你进一步浏览你会发现这个WebDriverCache has an active_drivers财产。这就是你所需要的。

要检索它,您可以使用Get Library Instance http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Get%20Library%20Instance关键字将返回 SeleniumLibrary 实例的对象。其余部分可以通过扩展变量语法访问。

您还必须设置适当的浏览器功能才能在 Web 驱动程序中启用日志记录。

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

def get_chrome_browser_logging_capability():
    d = DesiredCapabilities.CHROME
    d['goog:loggingPrefs'] = { 'browser':'ALL' }
    return d

def get_logs2(driver):
    return driver.get_log('browser')

这是一个简单的例子:

*** Settings ***
Library    SeleniumLibrary
Library    driver.py

*** Test Cases ***
Browser Log Cases
    ${capability}=    Get Chrome Browser Logging Capability
    Open Browser    https://stackoverflow.com    Chrome    desired_capabilities=${capability}
    Go To    https://stackoverflow.com/q/66155774/3820025
    ${seleniumlib}=    Get Library Instance    SeleniumLibrary
    ${message} =    Get Logs2   ${seleniumlib._drivers.active_drivers}[0]
    [Teardown]    Close All Browsers

通过这些我可以看到返回的日志条目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Robot Framework 使用 Robot Framework/selenium 获取后台调用 的相关文章

随机推荐