如何使用robot framework和selenium读取web控制台输出?



我试图读取一个网页的控制台输出,特别是我需要POST-GET-PUT ajax调用,与RF和Selenium。我在网上找到了一些帮助,但我似乎不能使它工作。我的python脚本是:

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(driver.current_url)
a = driver.get_log('browser')
# print messages
for entry in driver.get_log('browser'):
print(entry)
print("finished")
return a

我在网页上做了一些操作后,从RF调用这个脚本。因此,我需要将页面在执行操作后的确切状态传递给该函数。我这样做:

${seleniumlib}=    Get Library Instance    SeleniumLibrary
Log    ${seleniumlib._drivers.active_drivers}[0]
${message} =    Get Logs2   ${seleniumlib._drivers.active_drivers}[0]

我得到结果和空消息,但我知道控制台不是空的。你能帮忙吗?谢谢。

这是一个完全使用Robot Framework的解决方案,没有额外的用户库。逻辑是一样的。

  1. 设置正确的浏览器功能以启用日志记录。
  2. 然后使用Get Library Instance关键字检索webdriver实例
  3. 调用webdriver实例上的get_log('browser')

*** Settings ***
Library    SeleniumLibrary
*** Variables ***
&{browser logging capability}    browser=ALL
&{capabilities}    browserName=chrome    version=${EMPTY}    platform=ANY    goog:loggingPrefs=${browser logging capability}
*** Test Cases ***
Browser Log Cases
Open Browser    https://stackoverflow.com    Chrome    desired_capabilities=${capabilities}
${log entries}=    Get Browser Console Log Entries    
Log    ${log entries}
[Teardown]    Close All Browsers


*** Keywords ***
Get Browser Console Log Entries
${selenium}=    Get Library Instance    SeleniumLibrary
${webdriver}=    Set Variable     ${selenium._drivers.active_drivers}[0]
${log entries}=    Evaluate    $webdriver.get_log('browser')
[Return]    ${log entries}

最新更新