使用机器人框架';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命令时,必须在参数之间只留一个空格,并为反斜杠和等号使用正确的字符转义