我正在使用 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(使用前将#替换为@)