使用机器人框架';s进程库,curl-c不会创建cookie

使用机器人框架';s进程库,curl-c不会创建cookie,curl,cookies,robotframework,Curl,Cookies,Robotframework,使用流程库,我创建了以下内容: *** Settings *** Documentation Library Process Library OperatingSystem *** Test Case *** Test Case Start Sesh *** Keyword *** Start Sesh ${Authenticate}= Run Process curl -c cookie.txt -d j_username\=regression1

使用流程库,我创建了以下内容:

*** Settings ***
Documentation

Library    Process
Library    OperatingSystem

*** Test Case ***
Test Case
    Start Sesh

*** Keyword ***
Start Sesh
    ${Authenticate}=    Run Process  curl  -c cookie.txt  -d j_username\=regression1%40att&j_password\=TCpass1234&submit\=Login  https://api.company.com/j_spring_security_check
在命令行上运行curl命令会在工作目录中生成一个名为cookie.txt的cookie

出于某种原因,在Robot框架中运行该命令甚至不会创建文本文件,更不用说用会话填充它了

目标:我试图让curl以与命令行场景中相同的方式在RF中创建cookie

编辑:我可能已经使用shell=True解决了这个问题。保持联系

如果您想使用Robot Framework运行CURL,以下是答案: 先决条件:

*** Settings ***
Documentation

Library    Process

*** Variables ***
${COOKIE}            C:/sq_automation/cookie.txt

*** Keywords ***
Start API Session
    ${Authenticate}    Run Process    curl -i -c ${COOKIE} -d "j_username\=regression1%40att&j_password\=TCpass1234&submit\=Login https://api.website.com/j_spring_security_check"    shell=True    alias=Auth    cwd=C:/sq_automation
    Should Contain    ${Authenticate.stdout}    HTTP/1.1 302 Found
    ${result}    Get Process Result    Auth    rc=True    stdout=True    stderr=True

API POST
    ${Login}    Run Process    curl -i -b ${COOKIE} -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d "{\\"password\\":\\"${PASSWORD}\\",\\"username\\":\\"${USERID}\\"}" https://api.touchcommerce.com/engagementAPI/v1/agent/login?output\=json    shell=True    alias=Login    cwd=C:/sq_automation
    Should Contain    ${Login.stdout}    HTTP/1.1 200 OK
    ${result}    Get Process Result    Login    rc=True    stdout=True    stderr=True
    Get Registered ID    ${Login.stdout}
  • 进程库
  • 卷边窗
  • 在windows中将Curl.exe设置为路径变量
  • 还要知道,我使用RESTAPI实现了这一点
代码:

*** Settings ***
Documentation

Library    Process

*** Variables ***
${COOKIE}            C:/sq_automation/cookie.txt

*** Keywords ***
Start API Session
    ${Authenticate}    Run Process    curl -i -c ${COOKIE} -d "j_username\=regression1%40att&j_password\=TCpass1234&submit\=Login https://api.website.com/j_spring_security_check"    shell=True    alias=Auth    cwd=C:/sq_automation
    Should Contain    ${Authenticate.stdout}    HTTP/1.1 302 Found
    ${result}    Get Process Result    Auth    rc=True    stdout=True    stderr=True

API POST
    ${Login}    Run Process    curl -i -b ${COOKIE} -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d "{\\"password\\":\\"${PASSWORD}\\",\\"username\\":\\"${USERID}\\"}" https://api.touchcommerce.com/engagementAPI/v1/agent/login?output\=json    shell=True    alias=Login    cwd=C:/sq_automation
    Should Contain    ${Login.stdout}    HTTP/1.1 200 OK
    ${result}    Get Process Result    Login    rc=True    stdout=True    stderr=True
    Get Registered ID    ${Login.stdout}
我只能用shell=True来实现这一点。在编写curl命令时,必须在参数之间只留一个空格,并为反斜杠和等号使用正确的字符转义