This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
dongxiaoyan-tsg-autotest/02-Keyword/tsg_ui/policy/UIPolicy.robot

2141 lines
152 KiB
Plaintext
Raw Normal View History

*** Settings ***
Library json
Library Collections
Library Selenium2Library
Resource ../objects/NewObject.robot
Resource ../../../02-Keyword/tsg_ui/Menu.robot
Resource ../../../03-Variable/PolicyObjectDefault.txt
Resource ../../../03-Variable/BifangApiVariable.txt
*** Keywords ***
UIAddPolicies
[Arguments] ${PolicyInfo} ${SourceInfo}=null ${DestinationInfo}=null ${FilterInfo}=null ${Subactionadd}=null ${Keyring}=null ${MirrorDecryptedTrafficInfo}=null ${DecryptionProfile}=null
... ${ProxyDenyadd}=null ${DenyRedirectadd}=null ${ReplaceActionParameters}=null ${HijackFileadd}=null ${InsertScript}=null
[Documentation] 创建策略
... 调用次关键字前需要添加参数:
... ${PolicyInfo}是个字典:实例 ${PolicyInfo} Create Dictionary PolicyType=Security Policy PolicyName=${TEST NAME} PolicyAction=deny PolicySubAction=RST ApplicationSearch=HTTP PolicyLogSession=1 PolicyEnabled=1
... ${SourceInfo}是个字典实例sourceAddIpList=${sourceAddIpList} ${sourceAddIpList}是个列表,${sourceAddIpList} Create List ${sip1} 列表中是个字典:,实例:${sip1} Create Dictionary Sordtype=Source Type1=Ip CreateOrSearch=Create Add=Address Name=${TEST NAME}_IP1 Ipclienttext1=192.168.40.11-192.168.40.110 Port=1-65535
... ${DestinationInfo}和${SourceInfo}格式一致
... ${FilterInfo}是个字典:实例${FilterInfo} Create Dictionary Filter=${filter} Hostname=${hostname} URLname=${urlname} Request Headername=${RequestHeadername} Response Headername=${ResponseHeadername} 其中${filter}是个列表:实例${filter} create list Host URL Request Header Response Header Request Content其中${xxxname}是对象的名字
... ${Subactionadd}是一个字典:在"${PolicyType}"=="Security Policy" and "${PolicyAction}"=="deny" 并且PolicySubAction为Block或Alert或Redirect时需要的一个参数例如PolicySubAction=Block时需要填入${Subactionadd} Create Dictionary code=403 Content=TEXT block-text=123456
... ${Keyring}是一个字典,在"${PolicyType}"=="Security Policy" and "${PolicyAction}"=="intercept" and "ApplicationSearchV"=="SSL" 时需要根据用例情况填入例如name=证书名字 ${File}=文件所在路径 ${File1}=文件所在路径 ExpiryHours1or2=1或其他 ${Type}=上传证书类型的元素 ${Type1}=上传证书加密解密算法的元素 ${Shift}=close或open ${PrivateKeyType}=HSM或其他
... ${MirrorDecryptedTrafficInfo}是个字典:在"${PolicyType}"=="Security Policy" and "${PolicyAction}"=="intercept" and "ApplicationSearchV"=="SSL" 时需要根据用例情况填入,例如:${MirrorDecryptedTraffic}=输入open代表开启按钮其他代表不开启${MirrorDecryptedTrafficSearchorCreate}=填入Create或Search${MirrorDecryptedTrafficname}=解密流量文件的name${Type}=是mac还是vlan的定位元素${Shuru}=输入mac或vlan的值
... ${DecryptionProfile}是个字典:在"${PolicyType}"=="Security Policy" and "${PolicyAction}"=="intercept" and "ApplicationSearchV"=="SSL" 时需要根据用例情况填入,例如:${DecryptionProfileSearchorCreate}=填入Create或Search${DecryptionProfilename}=文件name${Dict1}:是个字典等于1为开启等于0为关闭例如Common Name=1 Issuer=1 Self-signed=1 Expiry Date=1 EV Certificat=1 Certificate Transparency=1 Mutual Authentication=1 On Protocol Errors=1 Certificate Pinning=1 Certificate Not Installed=1 Mirror Client Versions=1 Allow HTTP/2=1 ${Fail1} =输入Fail-close或Pass-through${Min1}=输入协议版本,${Max1}=输入协议版本,
... ${ProxyDenyadd}是个字典:例如:${DenyCode}=填入403或404或451${Action}=填入deny${Code}=填入403或404${Content}=填入TEXT或Profile${SearchorCreate}=填入Search或Create${BlockText}=填入TEXT文本框内容${ProfileName}=Profile的名字${File}=上传文件路径,${TextValue}=填入text输入框内容
... ${DenyRedirectadd}是个字典:例如:${QType}:填入A或AAAA${Avalue}:根据${QType}填入IPV4或IPV6的值${Attl}:根据${QType}填入A的ttl值或AAAA的ttl值${CNAMEvalue}:根据${QType}填入A的CNAME的域名值或AAAA的CNAME域名值${CNAMEttl}:根据${QType}填入A的CNAME的ttl值或AAAA的CNAME的ttl值
... ${ReplaceActionParameters}是个字典:例如:${ParametersType}:列表格式Search 下拉框中内容 ${xxxFind}是Find输入框输入的值${XXXReplacewith}:是 Replacewith输入框中输入的值
... ${HijackFileadd}是个字典:例如:${SearchorCreate}:填入Search或Create${Hijackname}:填入新建hijack的name${Hijackfile}:填入新建hijack文件的路径${DowName}:根据情况填入close或open或其他${Input}填入shuru或其他${Hijacktype}:填入选择文件类型的元素
... ${InsertScript}是个字典:例如:${SearchorCreate}:填入Search或Create${Insertname}:填入新建insert的name${Insertfile}:填入新建insert文件的路径${Inserttype}:根据情况填入css或js${Insertjstype}填入Before Page Load或After Page Load
${emptyList} Create List
${return} ${PolicyType} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyType
${PolicyType} Run Keyword If "${return}"=="FAIL" or "${PolicyType}"=="${EMPTY}" set variable ${Default_PolicyType}
... ELSE set variable ${PolicyType}
${return} ${PolicyName} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyName
${PolicyName} Run Keyword If "${return}"=="FAIL" or "${PolicyName}"=="${EMPTY}" set variable ${Default_PolicyName}
... ELSE set variable ${PolicyName}
${return} ${PolicyAction} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyAction
${PolicyAction} Run Keyword If "${return}"=="FAIL" or "${PolicyAction}"=="${EMPTY}" set variable ${Default_Action}
... ELSE set variable ${PolicyAction}
${return} ${PolicySubAction} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicySubAction
${PolicySubAction} Run Keyword If "${return}"=="FAIL" or "${PolicySubAction}"=="${EMPTY}" set variable ${Default_PolicySubAction}
... ELSE set variable ${PolicySubAction}
${return} ${ApplicationSearch} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} ApplicationSearch
${ApplicationSearchV} Run Keyword If "${return}"!="FAIL" and "${ApplicationSearch}"!="${EMPTY}" and "${ApplicationSearch}"!="${None}" Evaluate list(re.split('[,]', '${ApplicationSearch}')) re
... ELSE Set Variable ${emptyList}
${return} ${PolicyLogSession} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyLogSession
${PolicyLogSession} Run Keyword If "${return}"=="FAIL" or "${PolicyLogSession}"=="${EMPTY}" set variable ${Default_PolicyLogSession}
... ELSE set variable ${PolicyLogSession}
${return} ${LogOptions} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} LogOptions
${LogOptions} Run Keyword If "${return}"=="FAIL" or "${LogOptions}"=="${EMPTY}" set variable 1
... ELSE set variable ${LogOptions}
${return} ${PolicyEnabled} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyEnabled
${PolicyEnabled} Run Keyword If "${return}"=="FAIL" or "${PolicyEnabled}"=="${EMPTY}" set variable ${Default_PolicyEnabled}
... ELSE set variable ${PolicyEnabled}
Comment 新建策略 打开菜单
Menu policys ${PolicyType}
Comment 新建策略 打开安全策略列表上方的新建策略按钮
UIPolicy.CreateButton
UIPolicy.Create-name ${PolicyType} ${PolicyName}
UIPolicy.Create-actions ${PolicyType} ${PolicyAction}
#Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" log there is no SourceInfoDict
... ELSE UIPolicy. Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" log there is no SourceInfoDict
... ELSE UIPolicy.CreateEditDeleteSources ${SourceInfo}
Run Keyword If "${DestinationInfo}"=="${EMPTY}" log there is no DestinationInfo
... ELSE UIPolicy.Create-Destination-Button
Run Keyword If "${DestinationInfo}"=="${EMPTY}" log there is no DestinationInfo
... ELSE UIPolicy.CreateEditDeleteDestination ${DestinationInfo}
UIPolicy.Create-Application-Button ${PolicyType} ${ApplicationSearchV} ${PolicyAction}
#编辑filter
Run Keyword If "${FilterInfo}"=="null" log there is no FilterInfo
... ELSE Create-Filter-SecurityOrProxy ${PolicyType} ${ApplicationSearchV}[0] ${FilterInfo}
2021-03-03 09:27:00 +08:00
Run Keyword If "${PolicyType}"=="Security Policy" and "${PolicyAction}"=="Deny" run keywords sleep ${sleep}
... AND Deny-subaction-1 ${PolicyAction} ${PolicySubAction} ${Subactionadd}
Run Keyword If "${PolicyType}"=="Security Policy" and "${PolicyAction}"=="intercept" and "${ApplicationSearchV}"=="SSL" run keywords sleep ${sleep}
... AND Interceptadd ${Keyring} ${MirrorDecryptedTrafficInfo} ${DecryptionProfile}
2021-03-03 09:27:00 +08:00
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="Deny" run keywords sleep ${sleep}
... AND Proxy-Deny ${ProxyDenyadd}
2021-03-03 09:27:00 +08:00
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="Redirect" run keywords sleep ${sleep}
... AND Deny-Redirect ${DenyRedirectadd}
2021-03-03 09:27:00 +08:00
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="Replace" run keywords sleep ${sleep}
... AND Replace-Action-Parameters-for1 ${ReplaceActionParameters}
2021-03-03 09:27:00 +08:00
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="Hijack" run keywords sleep ${sleep}
... AND HijackFile-SearchorCreate ${HijackFileadd}
2021-03-03 09:27:00 +08:00
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="Insert" run keywords sleep ${sleep}
... AND InsertScript-SearchorCreate ${InsertScript}
Run Keyword If "${PolicyType}"=="Proxy Policy" run keywords ProxyLogSession ${PolicyLogSession}
... AND ProxyLogOptions ${LogOptions}
... ELSE LogSession ${PolicyLogSession}
Run Keyword If "${PolicyType}"=="Security Policy" Enabled ${PolicyEnabled}
... ELSE ProxyEnabled ${PolicyEnabled}
Run Keyword If "${PolicyType}"=="Security Policy" Security-Policies-OK
... ELSE Proxy-Policies-OK
Security-Source Name ${PolicyName}
Run Keyword If "${PolicyType}"=="Security Policy" SecurityAssert ${PolicyName}
... ELSE ProxyAssert ${PolicyName}
UIUpdataPolicies
[Arguments] ${PolicyInfo} ${SourceInfo}=null ${DestinationInfo}=null ${FilterInfo}=null ${Subactionadd}=null ${Keyring}=null ${MirrorDecryptedTrafficInfo}=null ${DecryptionProfile}=null
... ${ProxyDenyadd}=null ${DenyRedirectadd}=null ${ReplaceActionParameters}=null ${HijackFileadd}=null ${InsertScript}=null
[Documentation] 编辑策略
${emptyList} Create List
${return} ${PolicyType} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyType
${PolicyType} Run Keyword If "${return}"=="FAIL" or "${PolicyType}"=="${EMPTY}" set variable ${Default_PolicyType}
... ELSE set variable ${PolicyType}
${return} ${PolicyName} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyName
${PolicyName} Run Keyword If "${return}"=="FAIL" or "${PolicyName}"=="${EMPTY}" set variable ${Default_PolicyName}
... ELSE set variable ${PolicyName}
${return} ${PolicyEditName} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyEditName
${PolicyEditName} Run Keyword If "${return}"=="FAIL" or "${PolicyEditName}"=="${EMPTY}" set variable ${Default_PolicyName}
... ELSE set variable ${PolicyEditName}
${return} ${PolicyAction} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyAction
${PolicyAction} Run Keyword If "${return}"=="FAIL" or "${PolicyAction}"=="${EMPTY}" set variable ${Default_Action}
... ELSE set variable ${PolicyAction}
${return} ${PolicySubAction} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicySubAction
${PolicySubAction} Run Keyword If "${return}"=="FAIL" or "${PolicySubAction}"=="${EMPTY}" set variable ${Default_PolicySubAction}
... ELSE set variable ${PolicySubAction}
${return} ${ApplicationSearch} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} ApplicationSearch
${ApplicationSearchV} Run Keyword If "${return}"!="FAIL" and "${ApplicationSearch}"!="${EMPTY}" and "${ApplicationSearch}"!="${None}" Evaluate list(re.split('[,]', '${ApplicationSearch}')) re
... ELSE Set Variable ${emptyList}
${return} ${ApplicationFilter} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} ApplicationFilter
${ApplicationFilter} Run Keyword If "${return}"=="FAIL" or "${ApplicationFilter}"=="${EMPTY}" set variable null
... ELSE set variable ${ApplicationFilter}
${return} ${PolicyLogSession} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyLogSession
${PolicyLogSession} Run Keyword If "${return}"=="FAIL" or "${PolicyLogSession}"=="${EMPTY}" set variable ${Default_PolicyLogSession}
... ELSE set variable ${PolicyLogSessionession}
${return} ${LogOptions} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} LogOptions
${LogOptions} Run Keyword If "${return}"=="FAIL" or "${LogOptions}"=="${EMPTY}" set variable 1
... ELSE set variable ${LogOptions}
${return} ${PolicyEnabled} Run Keyword And Ignore Error Get From Dictionary ${PolicyInfo} PolicyEnabled
${PolicyEnabled} Run Keyword If "${return}"=="FAIL" or "${PolicyEnabled}"=="${EMPTY}" set variable ${Default_PolicyEnabled}
... ELSE set variable ${PolicyEnabled}
Comment 新建策略 打开菜单
Menu policys ${PolicyType}
Comment 新建策略 打开安全策略列表上方的新建策略按钮
UIPolicy.CreateButton
Comment 搜索要编辑的策略
Security-Source Name ${PolicyName}
Comment 点击编辑按钮Edit
EditButton
Comment 编辑name
UIPolicy.Create-name ${PolicyType} ${PolicyEditName}
Comment 编辑action
UIPolicy.Create-actions ${PolicyType} ${PolicyAction}
Comment 编辑Source
Run Keyword If "${SourceInfo}"=="${EMPTY}" log there is no SourceInfoDict
... ELSE UIPolicy. Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" log there is no SourceInfoDict
... ELSE UIPolicy.CreateEditDeleteSources ${SourceInfo}
Comment 编辑Destination
Run Keyword If "${DestinationInfo}"=="${EMPTY}" log there is no DestinationInfo
... ELSE UIPolicy.Create-Destination-Button
Run Keyword If "${DestinationInfo}"=="${EMPTY}" log there is no DestinationInfo
... ELSE UIPolicy.CreateEditDeleteDestination ${DestinationInfo}
Comment 编辑Application
UIPolicy.Create-Application-Button ${PolicyType} ${ApplicationSearchV} ${PolicyAction}
#编辑filter
Run Keyword If "${FilterInfo}"=="${EMPTY}" log there is no FilterInfo
... ELSE Create-Filter-SecurityOrProxy ${PolicyType} ${ApplicationFilter} ${FilterInfo}
Run Keyword If "${PolicyType}"=="Security Policy" and "${PolicyAction}"=="deny" run keywords sleep ${sleep}
... AND Deny-subaction-1 ${PolicyAction} ${PolicySubAction} ${Subactionadd}
Run Keyword If "${PolicyType}"=="Security Policy" and "${PolicyAction}"=="intercept" and "ApplicationSearchV"=="SSL" run keywords sleep ${sleep}
... AND Interceptadd ${Keyring} ${MirrorDecryptedTrafficInfo} ${DecryptionProfile}
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="deny" run keywords sleep ${sleep}
... AND Proxy-Deny ${ProxyDenyadd}
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="redirect" run keywords sleep ${sleep}
... AND Deny-Redirect ${DenyRedirectadd}
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="replace" run keywords sleep ${sleep}
... AND Replace-Action-Parameters-for1 ${ReplaceActionParameters}
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="hijack" run keywords sleep ${sleep}
... AND HijackFile-SearchorCreate ${HijackFileadd}
Run Keyword If "${PolicyType}"=="Proxy Policy" and "${PolicyAction}"=="insert" run keywords sleep ${sleep}
... AND InsertScript-SearchorCreate ${InsertScript}
Run Keyword If "${PolicyType}"=="Proxy Policy" run keywords ProxyLogSession ${PolicyLogSession}
... AND ProxyLogOptions ${LogOptions}
... ELSE LogSession ${PolicyLogSession}
Run Keyword If "${PolicyType}"=="Security Policy" Enabled ${PolicyEnabled}
... ELSE ProxyEnabled ${PolicyEnabled}
Run Keyword If "${PolicyType}"=="Security Policy" Security-Policies-OK
... ELSE Proxy-Policies-OK
Security-Source Name ${PolicyName}
Run Keyword If "${PolicyType}"=="Security Policy" SecurityAssert ${PolicyName}
... ELSE ProxyAssert ${PolicyName}
SecurityAssert
[Arguments] ${PolicyName}
${text} get text xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr/td[2]/div/div/p
Should Be Equal As Strings ${text} ${PolicyName}
ProxyAssert
[Arguments] ${PolicyName}
${text} get text xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr/td[2]/div/div/div/p
Should Be Equal As Strings ${text} ${PolicyName}
CreateEditDeleteSources
[Arguments] ${SourceInfoDict}
[Documentation] 策略源条件处理、包括增加create、searchupdate、delete几个列表;
... 格式新增Type1=IP option=Create Add=Address name=zdhip001 Ipclienttext1=192.168.100.1 Port=1
... 修改Type1=IP option=Update Add=Address name=zdhip001 Ipclienttext1=192.168.100.1 Port=1 把为name对应值的的记录修改为输入的内容
... 新增Type1=Geography option=Create Add=Address name=zdhip001 Ipclienttext1=192.168.100.1 Port=1geo
${return} ${AddList} Run Keyword And Ignore Error Get From Dictionary ${SourceInfoDict} sourceAddIpList
Run Keyword If "${return}"=="FAIL" or "${AddList}"=="${EMPTY}" log there is no CreateSource
... ELSE CreateSources1 ${AddList}
CreateSources1
[Arguments] ${AddList}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Type1}:填入Ip或SUBID或Geography或IPLearning
... ${CreateOrSearch}:填入Create或者Search
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... ${ObjectName}:列表形式,列表中是对象的名字
... ${Keywordtext}:填入新建subid的内容
... 判断新建source选择用什么样的类型数据
${listlenth}= Get Length ${AddList}
#${tempValue} set Variable tempValue
#FOR ${var} IN RANGE ${AddList}
FOR ${var} IN RANGE ${listlenth}
log ${var}
${tempValue} Get From List ${AddList} ${var}
CreateSource ${tempValue}
END
CreateEditDeleteDestination
[Arguments] ${DestinationInfoDict}
[Documentation] 策略源条件处理、包括增加create、searchupdate、delete几个列表;
... 格式新增Type1=IP option=Create Add=Address name=zdhip001 Ipclienttext1=192.168.100.1 Port=1
... 修改Type1=IP option=Update Add=Address name=zdhip001 Ipclienttext1=192.168.100.1 Port=1 把为name对应值的的记录修改为输入的内容
... 新增Type1=Geography option=Create Add=Address name=zdhip001 Ipclienttext1=192.168.100.1 Port=1geo
${return} ${AddList} Run Keyword And Ignore Error Get From Dictionary ${DestinationInfoDict} destinationAddIpList
Run Keyword If "${return}"=="FAIL" or "${AddList}"=="${EMPTY}" log there is no CreateSource
... ELSE CreateDestination1 ${AddList}
CreateDestination1
[Arguments] ${AddList}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Type1}:填入Ip或SUBID或Geography或IPLearning
... ${CreateOrSearch}:填入Create或者Search
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... ${ObjectName}:列表形式,列表中是对象的名字
... ${Keywordtext}:填入新建subid的内容
... 判断新建source选择用什么样的类型数据
${listlenth}= Get Length ${AddList}
#${tempValue} set Variable tempValue
#FOR ${var} IN RANGE ${AddList}
FOR ${var} IN RANGE ${listlenth}
log ${var}
${tempValue} Get From List ${AddList} ${var}
Create-Destination ${tempValue}
END
CreateSource
[Arguments] ${AddDict}
#[Arguments] ${PolicyType}=null ${Type1}=null ${CreateOrSearch}=null ${Add}=null ${Name}=null
#... ${ObjectName}=null ${Ipclienttext1}=null ${Port}=null ${Country}=null ${City}=null
#... ${Protocols1}=null ${Degree}=null ${Times}=null ${Numbers}=null ${Limits}=null ${Keywordtext}=null
[Documentation] 调用次关键字前需要添加必填参数:
... ${PolicyType}:填入安全策略或管控策略或tcp策略中前置元素安全和代理源/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4] 安全和代理目的:/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]
... tcp源/html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[2]
... tcp目的:/html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[3]
... ${Type1}:填入Ip或SUBID或Geography或IPLearning
... ${CreateOrSearch}:填入Create或者Search
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... ${ObjectName}:列表形式,列表中是对象的名字
... ${Keywordtext}:填入新建subid的内容
... 判断新建source选择用什么样的类型数据
#调用次关键字前需要添加必填参数:
${return} ${Sordtype} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Sordtype
${Sordtype} Run Keyword If "${return}"=="FAIL" or "${Sordtype}"=="${EMPTY}" set variable Source
... ELSE set variable ${Sordtype}
${typepath} Run Keyword If "${Sordtype}"=="Source" set variable /html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]
... ELSE set variable /html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]
${return} ${Type1} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Type1
${Type1} Run Keyword If "${return}"=="FAIL" or "${Type1}"=="${EMPTY}" set variable IP
... ELSE set variable ${Type1}
${return} ${CreateOrSearch} Run Keyword And Ignore Error Get From Dictionary ${AddDict} CreateOrSearch
${CreateOrSearch} Run Keyword If "${return}"=="FAIL" or "${CreateOrSearch}"=="${EMPTY}" set variable Create
... ELSE set variable ${CreateOrSearch}
${return} ${Add} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Add
${Add} Run Keyword If "${return}"=="FAIL" or "${Add}"=="${EMPTY}" set variable Add
... ELSE set variable ${Add}
${return} ${ObjectName} Run Keyword And Ignore Error Get From Dictionary ${AddDict} ObjectName
${ObjectName} Run Keyword If "${return}"=="FAIL" or "${ObjectName}"=="${EMPTY}" set variable null
... ELSE set variable ${ObjectName}
${return} ${Name} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Name
${Name} Run Keyword If "${return}"=="FAIL" or "${Name}"=="${EMPTY}" set variable null
... ELSE set variable ${Name}
${return} ${Ipclienttext1} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Ipclienttext1
${Ipclienttext1} Run Keyword If "${return}"=="FAIL" or "${Ipclienttext1}"=="${EMPTY}" set variable null
... ELSE set variable ${Ipclienttext1}
${return} ${Port} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Port
${Port} Run Keyword If "${return}"=="FAIL" or "${Port}"=="${EMPTY}" set variable null
... ELSE set variable ${Port}
${return} ${Country} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Country
${Country} Run Keyword If "${return}"=="FAIL" or "${Country}"=="${EMPTY}" set variable null
... ELSE set variable ${Country}
${return} ${City} Run Keyword And Ignore Error Get From Dictionary ${AddDict} City
${City} Run Keyword If "${return}"=="FAIL" or "${City}"=="${EMPTY}" set variable null
... ELSE set variable ${City}
${return} ${Fqdn} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Fqdn
${Fqdn} Run Keyword If "${return}"=="FAIL" or "${Fqdn}"=="${EMPTY}" set variable null
... ELSE set variable ${Fqdn}
${return} ${Protocols1} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Protocols1
${Protocols1} Run Keyword If "${return}"=="FAIL" or "${Protocols1}"=="${EMPTY}" set variable null
... ELSE set variable ${Protocols1}
${return} ${Degree} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Degree
${Degree} Run Keyword If "${return}"=="FAIL" or "${Degree}"=="${EMPTY}" set variable null
... ELSE set variable ${Degree}
${return} ${Times} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Times
${Times} Run Keyword If "${return}"=="FAIL" or "${Times}"=="${EMPTY}" set variable null
... ELSE set variable ${Times}
${return} ${Numbers} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Numbers
${Numbers} Run Keyword If "${return}"=="FAIL" or "${Numbers}"=="${EMPTY}" set variable null
... ELSE set variable ${Numbers}
${return} ${Limits} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Limits
${Limits} Run Keyword If "${return}"=="FAIL" or "${Limits}"=="${EMPTY}" set variable null
... ELSE set variable ${Limits}
${return} ${Keywordtext} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Keywordtext
${Keywordtext} Run Keyword If "${return}"=="FAIL" or "${Keywordtext}"=="${EMPTY}" set variable null
... ELSE set variable ${Keywordtext}
run keyword if "${Type1}"=="Ip" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[1]
... AND sleep ${sleep}
... AND sleep ${sleep}
... AND SourceIPCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Type1} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${Type1}"=="SUBID" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[2]
... AND sleep ${sleep}
... AND SUBIDCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Name} ${Keywordtext} ${ObjectName}
... ELSE IF "${Type1}"=="Geography" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[3]
... AND sleep ${sleep}
... AND SourceIPCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Type1} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${Type1}"=="IPLearning" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[4]
... AND sleep ${sleep}
... AND SourceIPCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Type1} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
Create-Destination
[Arguments] ${AddDict}
# ${PolicyType}=null ${Type1}=null ${CreateOrSearch}=null ${Add}=null ${Name}=null
# ... ${ObjectName}=null ${Ipclienttext1}=null ${Port}=null ${Country}=null ${City}=null
# ... ${Protocols1}=null ${Degree}=null ${Times}=null ${Numbers}=null ${Limits}=null ${Keywordtext}=null
[Documentation] 调用次关键字前需要添加必填参数:
... ${Type1}:填入Ip或SUBID或Geography或IPLearning
... ${CreateOrSearch}:填入Create或者Search
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... ${ObjectName}:列表形式,列表中是对象的名字
... ${Keywordtext}:填入新建subid的内容
... 判断新建source选择用什么样的类型数据
#调用次关键字前需要添加必填参数:
${return} ${Sordtype} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Sordtype
${Sordtype} Run Keyword If "${return}"=="FAIL" or "${Sordtype}"=="${EMPTY}" set variable Source
... ELSE set variable ${Sordtype}
${typepath} Run Keyword If "${Sordtype}"=="Source" set variable /html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]
... ELSE set variable /html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]
${return} ${Type1} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Type1
${Type1} Run Keyword If "${return}"=="FAIL" or "${Type1}"=="${EMPTY}" set variable IP
... ELSE set variable ${Type1}
${return} ${CreateOrSearch} Run Keyword And Ignore Error Get From Dictionary ${AddDict} CreateOrSearch
${CreateOrSearch} Run Keyword If "${return}"=="FAIL" or "${CreateOrSearch}"=="${EMPTY}" set variable Create
... ELSE set variable ${CreateOrSearch}
${return} ${Add} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Add
${Add} Run Keyword If "${return}"=="FAIL" or "${Add}"=="${EMPTY}" set variable Add
... ELSE set variable ${Add}
${return} ${ObjectName} Run Keyword And Ignore Error Get From Dictionary ${AddDict} ObjectName
${ObjectName} Run Keyword If "${return}"=="FAIL" or "${ObjectName}"=="${EMPTY}" set variable null
... ELSE set variable ${ObjectName}
${return} ${Name} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Name
${Name} Run Keyword If "${return}"=="FAIL" or "${Name}"=="${EMPTY}" set variable null
... ELSE set variable ${Name}
${return} ${Ipclienttext1} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Ipclienttext1
${Ipclienttext1} Run Keyword If "${return}"=="FAIL" or "${Ipclienttext1}"=="${EMPTY}" set variable null
... ELSE set variable ${Ipclienttext1}
${return} ${Port} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Port
${Port} Run Keyword If "${return}"=="FAIL" or "${Port}"=="${EMPTY}" set variable null
... ELSE set variable ${Port}
${return} ${Country} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Country
${Country} Run Keyword If "${return}"=="FAIL" or "${Country}"=="${EMPTY}" set variable null
... ELSE set variable ${Country}
${return} ${City} Run Keyword And Ignore Error Get From Dictionary ${AddDict} City
${City} Run Keyword If "${return}"=="FAIL" or "${City}"=="${EMPTY}" set variable null
... ELSE set variable ${City}
${return} ${Fqdn} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Fqdn
${Fqdn} Run Keyword If "${return}"=="FAIL" or "${Fqdn}"=="${EMPTY}" set variable null
... ELSE set variable ${Fqdn}
${return} ${Protocols1} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Protocols1
${Protocols1} Run Keyword If "${return}"=="FAIL" or "${Protocols1}"=="${EMPTY}" set variable null
... ELSE set variable ${Protocols1}
${return} ${Degree} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Degree
${Degree} Run Keyword If "${return}"=="FAIL" or "${Degree}"=="${EMPTY}" set variable null
... ELSE set variable ${Degree}
${return} ${Times} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Times
${Times} Run Keyword If "${return}"=="FAIL" or "${Times}"=="${EMPTY}" set variable null
... ELSE set variable ${Times}
${return} ${Numbers} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Numbers
${Numbers} Run Keyword If "${return}"=="FAIL" or "${Numbers}"=="${EMPTY}" set variable null
... ELSE set variable ${Numbers}
${return} ${Limits} Run Keyword And Ignore Error Get From Dictionary ${AddDict} Limits
${Limits} Run Keyword If "${return}"=="FAIL" or "${Limits}"=="${EMPTY}" set variable null
... ELSE set variable ${Limits}
run keyword if "${Type1}"=="Ip" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[1]
... AND sleep ${sleep}
... AND sleep ${sleep}
... AND DestinationIPCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Type1} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${Type1}"=="Geography" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[2]
... AND sleep ${sleep}
... AND DestinationIPCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Type1} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${Type1}"=="IPLearning" run keywords sleep ${sleep}
... AND click element xpath=${typepath}/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[3]
... AND sleep ${sleep}
... AND DestinationIPCreateOrSearch ${typepath} ${CreateOrSearch} ${Add} ${Type1} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
CreateButton
[Documentation] 点击安全策略中的Create按钮
Wait Until Element Is Enabled id=app_create
sleep ${sleep}
click element id=app_create
Create-name
[Arguments] ${PolicyType} ${Name}
[Documentation] 输入name
sleep ${sleep}
run keyword if "${PolicyType}"=="Security Policy" run keywords sleep ${sleep}
... AND input text id=interceptionadd_name ${Name}
run keyword if "${PolicyType}"=="Proxy Policy" run keywords sleep ${sleep}
... AND input text id=manipulation_elInput_policyName ${Name}
Create-actions
[Arguments] ${PolicyType} ${Action}
sleep ${sleep}
run keyword if "${PolicyType}"=="Security Policy" run keywords sleep ${sleep}
... AND Create-Securityaction ${Action}
run keyword if "${PolicyType}"=="Proxy Policy" run keywords sleep ${sleep}
... AND Create-Proxyaction ${Action}
Create-Securityaction
[Arguments] ${Action}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Action}:填入allow或deny或monitor或intercept
... 判断要创建什么动作的策略
sleep ${sleep}
run keyword if "${Action}"=="Allow" run keywords sleep ${sleep}
... AND click element id=security_action_allow
... ELSE IF "${Action}"=="Deny" run keywords sleep ${sleep}
... AND click element id=security_action_deny
... ELSE IF "${Action}"=="Monitor" run keywords sleep ${sleep}
... AND click element id=security_action_monitor
... ELSE IF "${Action}"=="Intercept" run keywords sleep ${sleep}
... AND click element id=security_action_intercept
Create-Proxyaction
[Arguments] ${Action}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Action}:填入allow或deny或monitor或intercept
... 判断要创建什么动作的策略
sleep ${sleep}
run keyword if "${Action}"=="Allow" run keywords sleep ${sleep}
... AND click element id=proxyManipulationallow
... ELSE IF "${Action}"=="Deny" run keywords sleep ${sleep}
... AND click element id=proxyManipulationdeny
... ELSE IF "${Action}"=="Monitor" run keywords sleep ${sleep}
... AND click element id=proxyManipulationmonitor
... ELSE IF "${Action}"=="Redirect" run keywords sleep ${sleep}
... AND click element id=proxyManipulationredirect
... ELSE IF "${Action}"=="Replace" run keywords sleep ${sleep}
... AND click element id=proxyManipulationreplace
... ELSE IF "${Action}"=="Hijack" run keywords sleep ${sleep}
... AND click element id=proxyManipulationhijack
... ELSE IF "${Action}"=="Insert" run keywords sleep ${sleep}
... AND click element id=proxyManipulationinsert
Create-Source-Button
[Documentation] 点击Source的加号
sleep ${sleep}
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[1]/div/div
Create-Destination-Button
[Documentation] 点击Destination的加号
Wait Until Element Is Enabled xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[1]/div/div 10
sleep ${sleep}
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[1]/div/div
Create-Application-Button
[Arguments] ${PolicyType} ${ApplicationSearchV} ${Action}
[Documentation] 点击Application的加号
run keyword if "${PolicyType}"=="Security Policy" run keywords Wait Until Element Is Enabled id=interceptionadd_application 10
... AND click element id=interceptionadd_application
... AND sleep ${sleep}
... AND SecurityApplicationFor ${ApplicationSearchV}
... AND sleep ${sleep}
run keyword if "${PolicyType}"=="Proxy Policy" ProxyApplicationSearch ${Action} ${ApplicationSearchV}
SecurityApplicationFor
[Arguments] ${ApplicationSearchV}
2021-03-03 09:27:00 +08:00
${a} set variable ${ApplicationSearchV}[0]
FOR ${i} IN @{ApplicationSearchV}
run keyword if "${a}" != "${i}" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_application"]/i
SecurityApplicationSearch ${i}
${a} set variable ${i}
END
SecurityApplicationSearch
[Arguments] ${Application}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Application}:填入是Application的内容例如SSL或HTTP
... 选择search对象
sleep ${sleep}
input text xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[5]/div[2]/div[2]/div/div[1]/input ${Application}
sleep ${sleep}
press keys xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[5]/div[2]/div[2]/div/div[1]/input ENTER
sleep ${sleep}
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[5]/div[2]/div[2]/div/div[3]/div/div/ul/li[1]
sleep ${sleep}
click element id=check_list_allcancelobject
sleep ${sleep}
ProxyApplicationSearch
[Arguments] ${Action} ${HttpOrDoh}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Action}:填入是action的内容例如redirect或deny
... 选择search对象
run keyword if "${Action}"=="redirect" run keywords sleep ${sleep}
... AND click element id=interceptionadd_application
... AND sleep ${sleep}
... AND HttpOrDoh ${HttpOrDoh}
... ELSE log 不操作
HttpOrDoh
[Arguments] ${HttpOrDoh}
[Documentation] 调用次关键字前需要添加必填参数:
... ${HttpOrDoh}:填入是Application的内容例如Doh或HTTP
... 选择search对象
run keyword if "${HttpOrDoh}"=="HTTP" run keywords sleep ${sleep}
... AND click element id=interceptionadd_checkappshow1
... AND sleep ${sleep}
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[7]/div[3]/div/button
... ELSE IF "${HttpOrDoh}"=="Doh" run keywords sleep ${sleep}
... AND click element id=interceptionadd_checkappshow0
... AND sleep ${sleep}
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[7]/div[3]/div/button
Create-Filter-SecurityOrProxy
[Arguments] ${PolicyType} ${Application} ${addFilter}
[Documentation] 点击Application的加号
${return} ${Filter} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Filter
${Filter} Run Keyword If "${return}"=="FAIL" or "${Filter}"=="${EMPTY}" set variable null
... ELSE set variable ${Filter}
${return} ${Hostname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Hostname
${Hostname} Run Keyword If "${return}"=="FAIL" or "${Hostname}"=="${EMPTY}" set variable null
... ELSE set variable ${Hostname}
${return} ${URLname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} URLname
${URLname} Run Keyword If "${return}"=="FAIL" or "${URLname}"=="${EMPTY}" set variable null
... ELSE set variable ${URLname}
${return} ${Request Headername} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Request Headername
${Request Headername} Run Keyword If "${return}"=="FAIL" or "${Request Headername}"=="${EMPTY}" set variable null
... ELSE set variable ${Request Headername}
${return} ${Response Headername} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Response Headername
${Response Headername} Run Keyword If "${return}"=="FAIL" or "${Response Headername}"=="${EMPTY}" set variable null
... ELSE set variable ${Response Headername}
${return} ${Request Contentname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Request Contentname
${Request Contentname} Run Keyword If "${return}"=="FAIL" or "${Request Contentname}"=="${EMPTY}" set variable null
... ELSE set variable ${Request Contentname}
${return} ${Response Contentname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Response Contentname
${Response Contentname} Run Keyword If "${return}"=="FAIL" or "${Response Contentname}"=="${EMPTY}" set variable null
... ELSE set variable ${Response Contentname}
${return} ${SSLSNIname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} SSLSNIname
${SSLSNIname} Run Keyword If "${return}"=="FAIL" or "${SSLSNIname}"=="${EMPTY}" set variable null
... ELSE set variable ${SSLSNIname}
${return} ${CNname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} CNname
${CNname} Run Keyword If "${return}"=="FAIL" or "${CNname}"=="${EMPTY}" set variable null
... ELSE set variable ${CNname}
${return} ${SANname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} SANname
${SANname} Run Keyword If "${return}"=="FAIL" or "${SANname}"=="${EMPTY}" set variable null
... ELSE set variable ${SANname}
${return} ${QNAMEname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} QNAMEname
${QNAMEname} Run Keyword If "${return}"=="FAIL" or "${QNAMEname}"=="${EMPTY}" set variable null
... ELSE set variable ${QNAMEname}
${return} ${Subjectname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Subjectname
${Subjectname} Run Keyword If "${return}"=="FAIL" or "${Subjectname}"=="${EMPTY}" set variable null
... ELSE set variable ${Subjectname}
${return} ${MAILContentname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} MAILContentname
${MAILContentname} Run Keyword If "${return}"=="FAIL" or "${MAILContentname}"=="${EMPTY}" set variable null
... ELSE set variable ${MAILContentname}
${return} ${Attachment Namename} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Attachment Namename
${Attachment Namename} Run Keyword If "${return}"=="FAIL" or "${Attachment Namename}"=="${EMPTY}" set variable null
... ELSE set variable ${Attachment Namename}
${return} ${Attachment Contentname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Attachment Contentname
${Attachment Contentname} Run Keyword If "${return}"=="FAIL" or "${Attachment Contentname}"=="${EMPTY}" set variable null
... ELSE set variable ${Attachment Contentname}
${return} ${Fromname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Fromname
${Fromname} Run Keyword If "${return}"=="FAIL" or "${Fromname}"=="${EMPTY}" set variable null
... ELSE set variable ${Fromname}
${return} ${Toname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} Toname
${Toname} Run Keyword If "${return}"=="FAIL" or "${Toname}"=="${EMPTY}" set variable null
... ELSE set variable ${Toname}
${return} ${MAILAccountname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} MAILAccountname
${MAILAccountname} Run Keyword If "${return}"=="FAIL" or "${MAILAccountname}"=="${EMPTY}" set variable null
... ELSE set variable ${MAILAccountname}
${return} ${URIname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} URIname
${URIname} Run Keyword If "${return}"=="FAIL" or "${URIname}"=="${EMPTY}" set variable null
... ELSE set variable ${URIname}
${return} ${FTPContentname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} FTPContentname
${FTPContentname} Run Keyword If "${return}"=="FAIL" or "${FTPContentname}"=="${EMPTY}" set variable null
... ELSE set variable ${FTPContentname}
${return} ${FTPAccountname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} FTPAccountname
${FTPAccountname} Run Keyword If "${return}"=="FAIL" or "${FTPAccountname}"=="${EMPTY}" set variable null
... ELSE set variable ${FTPAccountname}
${return} ${QUICSNIname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} QUICSNIname
${QUICSNIname} Run Keyword If "${return}"=="FAIL" or "${QUICSNIname}"=="${EMPTY}" set variable null
... ELSE set variable ${QUICSNIname}
${return} ${DohHostname} Run Keyword And Ignore Error Get From Dictionary ${addFilter} DohHostname
${DohHostname} Run Keyword If "${return}"=="FAIL" or "${DohHostname}"=="${EMPTY}" set variable null
... ELSE set variable ${DohHostname}
run keyword if "${PolicyType}"=="Security Policy" Create-SecurityFilter-judge ${Application} ${Filter} ${Hostname} ${URLname} ${Request Headername} ${Response Headername} ${Request Contentname}
... ${Response Contentname} ${SSLSNIname} ${CNname} ${SANname} ${QNAMEname} ${Subjectname} ${MAILContentname} ${Attachment Namename}
... ${Attachment Contentname} ${Fromname} ${Toname} ${MAILAccountname} ${URIname} ${FTPContentname} ${FTPAccountname} ${QUICSNIname}
run keyword if "${PolicyType}"=="Proxy Policy" Create-ProxyFilter ${Application} ${Filter} ${Hostname} ${URLname} ${Request Headername} ${Response Headername} ${Request Contentname}
... ${Response Contentname} ${QNAMEname} ${DohHostname}
Create-SecurityFilter-judge
[Arguments] ${Application}=null ${Filter}=null ${Hostname}=null ${URLname}=null ${Request Headername}=null ${Response Headername}=null ${Request Contentname}=null
... ${Response Contentname}=null ${SSLSNIname}=null ${CNname}=null ${SANname}=null ${QNAMEname}=null ${Subjectname}=null ${MAILContentname}=null ${Attachment Namename}=null
... ${Attachment Contentname}=null ${Fromname}=null ${Toname}=null ${MAILAccountname}=null ${URIname}=null ${FTPContentname}=null ${FTPAccountname}=null ${QUICSNIname}=null
[Documentation] 调用次关键字前需要添加必填参数:
... ${Application}:填入是Application的内容例如SSL或HTTP
... ${Filter}:是一个列表列表中填入filter类型例如Host或URL等
... name:各个对象名称的列表
... 判断filter是否可以点击
${class}= Get Element Attribute xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[8]/div[1]/div/div[1] class
run keyword if "${class}"=="addobject addobject-long-list obj-content-null filter-width-style cursor addobject-long-list-disabled" log filter不可点击不可添加filter
run keyword if "${class}"=="addobject addobject-long-list obj-content-null filter-width-style cursor" run keywords sleep ${sleep}
... AND Create-SecurityFilter ${Application} ${Filter} ${Hostname} ${URLname} ${Request Headername} ${Response Headername} ${Request Contentname}
... ${Response Contentname} ${SSLSNIname} ${CNname} ${SANname} ${QNAMEname} ${Subjectname} ${MAILContentname} ${Attachment Namename}
... ${Attachment Contentname} ${Fromname} ${Toname} ${MAILAccountname} ${URIname} ${FTPContentname} ${FTPAccountname} ${QUICSNIname}
Create-SecurityFilter
[Arguments] ${Application} ${Filter} ${Hostname} ${URLname} ${Request Headername} ${Response Headername} ${Request Contentname}
... ${Response Contentname} ${SSLSNIname} ${CNname} ${SANname} ${QNAMEname} ${Subjectname} ${MAILContentname} ${Attachment Namename}
... ${Attachment Contentname} ${Fromname} ${Toname} ${MAILAccountname} ${URIname} ${FTPContentname} ${FTPAccountname} ${QUICSNIname}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Application}:填入是Application的内容例如SSL或HTTP
... ${Filter}:是一个列表列表中填入filter类型例如Host或URL等
... name:各个对象名称的列表
... 判断添加filter类型
sleep ${sleep}
log ${Application}
FOR ${i} IN @{Filter}
sleep ${sleep}
click element id=interceptionadd_add_filter
sleep ${sleep}
run keyword if "${Application}"=="HTTP" and "${i}"=="Host" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${Hostname} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="URL" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[2]
... AND Create-Object-Search ${URLname} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Request Header" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[3]
... AND Create-Object-Search ${Request Headername} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Response Header" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[4]
... AND Create-Object-Search ${Response Headername} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Request Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[5]
... AND Create-Object-Search ${Request Contentname} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Response Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[6]
... AND Create-Object-Search ${Response Contentname} ${i}
run keyword if "${Application}"=="SSL" and "${i}"=="SNI" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${SSLSNIname} ${i}
run keyword if "${Application}"=="SSL" and "${i}"=="CN" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[2]
... AND Create-Object-Search ${CNname} ${i}
run keyword if "${Application}"=="SSL" and "${i}"=="SAN" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[3]
... AND Create-Object-Search ${SANname} ${i}
run keyword if "${Application}"=="DNS" and "${i}"=="QNAME" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${QNAMEname} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="Subject" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${Subjectname} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[2]
... AND Create-Object-Search ${MAILContentname} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="Attachment Name" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[3]
... AND Create-Object-Search ${Attachment Namename} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="Attachment Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[4]
... AND Create-Object-Search ${Attachment Contentname} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="From" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[5]
... AND Create-Object-Search ${Fromname} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="To" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[6]
... AND Create-Object-Search ${Toname} ${i}
run keyword if "${Application}"=="MAIL" and "${i}"=="Account" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[7]
... AND Create-Object-Search ${MAILAccountname} ${i}
run keyword if "${Application}"=="FTP" and "${i}"=="URI" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${URIname} ${i}
run keyword if "${Application}"=="FTP" and "${i}"=="Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[2]
... AND Create-Object-Search ${FTPContentname} ${i}
run keyword if "${Application}"=="FTP" and "${i}"=="Account" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[3]
... AND Create-Object-Search ${FTPAccountname} ${i}
run keyword if "${Application}"=="QUIC" and "${i}"=="SNI" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${QUICSNIname} ${i}
run keyword if "${Application}"=="SIP" and "${i}"=="From" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
... AND Create-Object-Search ${Fromname} ${i}
run keyword if "${Application}"=="SIP" and "${i}"=="To" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[2]
... AND Create-Object-Search ${Toname} ${i}
END
Create-ProxyFilter
[Arguments] ${Application}=null ${Filter}=null ${Hostname}=null ${URLname}=null ${Request Headername}=null ${Response Headername}=null ${Request Contentname}=null
... ${Response Contentname}=null ${QNAMEname}=null ${DohHostname}=null
[Documentation] 调用次关键字前需要添加必填参数:
... ${Application}:填入是Application的内容例如SSL或HTTP
... ${Filter}:是一个列表列表中填入filter类型例如Host或URL等
... name:各个对象名称的列表
... 判断添加filter类型 xpath=//*[@id="policy_paper_left"]/div[8]/div/div[1]/label[contains(text(), "${filter}")]/following-sibling::div/div //*[@id="interceptionadd_checkappshow0"][contains(text(), "${filter}")]
sleep ${sleep}
FOR ${i} IN @{Filter}
sleep ${sleep}
click element id=interceptionadd_add_filter
sleep ${sleep}
run keyword if "${Application}"=="HTTP" and "${i}"=="Host" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow0"][contains(text(), "${i}")]
... AND Create-Object-Search ${Hostname} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="URL" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow1"][contains(text(), "${i}")]
... AND Create-Object-Search ${URLname} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Request Header" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow2"][contains(text(), "${i}")]
... AND Create-Object-Search ${Request Headername} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Response Header" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow3"][contains(text(), "${i}")]
... AND Create-Object-Search ${Response Headername} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Request Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow4"][contains(text(), "${i}")]
... AND Create-Object-Search ${Request Contentname} ${i}
run keyword if "${Application}"=="HTTP" and "${i}"=="Response Content" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow5"][contains(text(), "${i}")]
... AND Create-Object-Search ${Response Contentname} ${i}
run keyword if "${Application}"=="Doh" and "${i}"=="Host" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow0"][contains(text(), "${i}")]
... AND Create-Object-Search ${DohHostname} ${i}
run keyword if "${Application}"=="Doh" and "${i}"=="QNAME" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="interceptionadd_checkappshow1"][contains(text(), "${i}")]
... AND Create-Object-Search ${QNAMEname} ${i}
END
Deny-subaction-1
[Arguments] ${Action} ${subaction} ${Subactionadd}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Code}:填入403或404
... ${Content}:填入TEXT或Profile
... ${SearchorCreate}:填入Search或Create
... ${BlockText}:填入TEXT文本框内容
... ${ProfileName}:Profile的名字
... ${File}:上传文件路径
... ${QType}:填入A或AAAA
... ${Avalue}:根据${QType}填入IPV4或IPV6的值
... ${Attl}:根据${QType}填入A的ttl值或AAAA的ttl值
... ${CNAMEvalue}:根据${QType}填入A的CNAME的域名值或AAAA的CNAME域名值
... ${CNAMEttl}:根据${QType}填入A的CNAME的ttl值或AAAA的CNAME的ttl值
... 添加subaction
${return} ${Code} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} Code
${Code} Run Keyword If "${return}"=="FAIL" or "${Code}"=="${EMPTY}" set variable null
... ELSE set variable ${Code}
${return} ${Content} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} Content
${Content} Run Keyword If "${return}"=="FAIL" or "${Content}"=="${EMPTY}" set variable null
... ELSE set variable ${Content}
${return} ${BlockText} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} BlockText
${BlockText} Run Keyword If "${return}"=="FAIL" or "${BlockText}"=="${EMPTY}" set variable null
... ELSE set variable ${BlockText}
${return} ${SearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} SearchorCreate
${SearchorCreate} Run Keyword If "${return}"=="FAIL" or "${SearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${SearchorCreate}
${return} ${ProfileName} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} ProfileName
${ProfileName} Run Keyword If "${return}"=="FAIL" or "${ProfileName}"=="${EMPTY}" set variable null
... ELSE set variable ${ProfileName}
${return} ${File} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} File
${File} Run Keyword If "${return}"=="FAIL" or "${File}"=="${EMPTY}" set variable null
... ELSE set variable ${File}
${return} ${QType} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} QType
${QType} Run Keyword If "${return}"=="FAIL" or "${QType}"=="${EMPTY}" set variable null
... ELSE set variable ${QType}
${return} ${Avalue} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} Avalue
${Avalue} Run Keyword If "${return}"=="FAIL" or "${Avalue}"=="${EMPTY}" set variable null
... ELSE set variable ${Avalue}
${return} ${Attl} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} Attl
${Attl} Run Keyword If "${return}"=="FAIL" or "${Attl}"=="${EMPTY}" set variable null
... ELSE set variable ${Attl}
${return} ${CNAMEvalue} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} CNAMEvalue
${CNAMEvalue} Run Keyword If "${return}"=="FAIL" or "${CNAMEvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${CNAMEvalue}
${return} ${CNAMEttl} Run Keyword And Ignore Error Get From Dictionary ${Subactionadd} CNAMEttl
${CNAMEttl} Run Keyword If "${return}"=="FAIL" or "${CNAMEttl}"=="${EMPTY}" set variable null
... ELSE set variable ${CNAMEttl}
2021-03-03 09:27:00 +08:00
run keyword if "${Action}"=="Deny" and "${subaction}"=="Drop" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method0
2021-03-03 09:27:00 +08:00
run keyword if "${Action}"=="Deny" and "${subaction}"=="RST" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method1
2021-03-03 09:27:00 +08:00
run keyword if "${Action}"=="Deny" and "${subaction}"=="Block" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method2
... AND Deny-Block ${Code} ${Content} ${BlockText} ${SearchorCreate} ${ProfileName} ${File}
2021-03-03 09:27:00 +08:00
run keyword if "${Action}"=="Deny" and "${subaction}"=="Alert" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method3
... AND Deny-Block ${Code} ${Content} ${BlockText} ${SearchorCreate} ${ProfileName} ${File}
2021-03-03 09:27:00 +08:00
run keyword if "${Action}"=="Deny" and "${subaction}"=="Redirect" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method4
... AND sleep ${sleep}
... AND click element id=interceptionadd_rightdetails
... AND sleep ${sleep}
... AND Deny-Redirect ${QType} ${Avalue} ${Attl} ${CNAMEvalue} ${CNAMEttl}
Deny-Block
[Arguments] ${Code} ${Content} ${BlockText} ${SearchorCreate} ${ProfileName} ${File}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Code}:填入403或404
... ${Content}:填入TEXT或Profile
... ${SearchorCreate}:填入Search或Create
... ${BlockText}:填入TEXT文本框内容
... ${ProfileName}:Profile的名字
... ${File}:上传文件路径
... 添加block数据内容
2021-03-03 09:27:00 +08:00
# sleep ${sleep}
# click element id=denyUserRegionBlock_code
run keyword if "${Code}"=="403" or "${Code}"=="200" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_code_select0
... AND sleep ${sleep}
... AND click element id=blockselect
... ELSE IF "${Code}"=="404" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_code_select1
... AND sleep ${sleep}
... AND click element id=blockselect
... ELSE IF "${Code}"=="204" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_code_select1
2021-03-03 09:27:00 +08:00
... ELSE IF "${Code}" == "480" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_mailCode
... AND sleep ${sleep}
... AND click element id=bolck_mail_code480
... ELSE IF "${Code}" == "500" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_mailCode
... AND sleep ${sleep}
... AND click element id=bolck_mail_code500
run keyword if "${Content}"=="TEXT" run keywords sleep ${sleep}
... AND click element id=blockselect_select0
... AND sleep ${sleep}
... AND input text id=denyUserRegionBlock_message ${BlockText}
... ELSE IF "${Content}"=="Profile" run keywords sleep ${sleep}
... AND click element id=blockselect_select1
... AND sleep ${sleep}
... AND Profile-SearchorCreate ${SearchorCreate} ${ProfileName} ${File}
Profile-SearchorCreate
[Arguments] ${SearchorCreate} ${ProfileName} ${File}
[Documentation] 调用次关键字前需要添加必填参数:
... ${SearchorCreate}:填入Search或Create
... ${ProfileName}:Profile的名字
... ${File}:上传文件路径
... 判断是新建还是搜索profile
sleep ${sleep}
click element id=html_profile
sleep ${sleep}
run keyword if "${SearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text id=filedata_profileName ${ProfileName}
... AND sleep ${sleep}
... AND press keys id=filedata_profileName ENTER
... AND sleep ${sleep}
... AND click element id=filelist_select0
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_fileadd
... AND sleep ${sleep}
... AND input text id=responsepages_profileName ${ProfileName}
... AND sleep ${sleep}
... AND Choose File xpath=//*[@id="policy_Manipulation_create6"]/div[2]/form/div[2]/div/div/div/input ${File} #上传文件
... AND sleep ${sleep}
... AND clcik element id=responseAddOk1
... ELSE log 传入参数错误
Deny-Redirect
[Arguments] ${DenyRedirectadd}
# ${QType} ${Avalue} ${Attl} ${CNAMEvalue} ${CNAMEttl}
[Documentation] 调用次关键字前需要添加必填参数:
... ${QType}:填入A或AAAA
... ${Avalue}:根据${QType}填入IPV4或IPV6的值
... ${Attl}:根据${QType}填入A的ttl值或AAAA的ttl值
... ${CNAMEvalue}:根据${QType}填入A的CNAME的域名值或AAAA的CNAME域名值
... ${CNAMEttl}:根据${QType}填入A的CNAME的ttl值或AAAA的CNAME的ttl值
... 新建Redirect
${return} ${QType} Run Keyword And Ignore Error Get From Dictionary ${${DenyRedirectadd}} QType
${QType} Run Keyword If "${return}"=="FAIL" or "${QType}"=="${EMPTY}" set variable null
... ELSE set variable ${QType}
${return} ${Avalue} Run Keyword And Ignore Error Get From Dictionary ${${DenyRedirectadd}} Avalue
${Avalue} Run Keyword If "${return}"=="FAIL" or "${Avalue}"=="${EMPTY}" set variable null
... ELSE set variable ${Avalue}
${return} ${Attl} Run Keyword And Ignore Error Get From Dictionary ${${DenyRedirectadd}} Attl
${Attl} Run Keyword If "${return}"=="FAIL" or "${Attl}"=="${EMPTY}" set variable null
... ELSE set variable ${Attl}
${return} ${CNAMEvalue} Run Keyword And Ignore Error Get From Dictionary ${${DenyRedirectadd}} CNAMEvalue
${CNAMEvalue} Run Keyword If "${return}"=="FAIL" or "${CNAMEvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${CNAMEvalue}
${return} ${CNAMEttl} Run Keyword And Ignore Error Get From Dictionary ${${DenyRedirectadd}} CNAMEttl
${CNAMEttl} Run Keyword If "${return}"=="FAIL" or "${CNAMEttl}"=="${EMPTY}" set variable null
... ELSE set variable ${CNAMEttl}
run keyword if "${QType}"=="A" run keywords sleep ${sleep}
... AND input text id=A00 ${Avalue}
... AND sleep ${sleep}
... AND input text id=ttl00 ${Attl}
... AND sleep ${sleep}
... AND click element id=interceptionadd_addForm
... AND sleep ${sleep}
... AND input text id=Cname01 ${CNAMEvalue}
... AND sleep ${sleep}
... AND input text id=ttl01 ${CNAMEttl}
run keyword if "${QType}"=="AAAA" run keywords sleep ${sleep}
... AND click element id=dns_qtype_radio01
... AND input text id=AAAA00 ${Avalue}
... AND sleep ${sleep}
... AND input text id=ttl00 ${Attl}
... AND sleep ${sleep}
... AND click element id=interceptionadd_addForm
... AND sleep ${sleep}
... AND input text id=Cname01 ${CNAMEvalue}
... AND sleep ${sleep}
... AND input text id=ttl01 ${CNAMEttl}
sleep ${sleep}
click element id=interceptionadd_shezhidns
Interceptadd
[Arguments] ${Keyring} ${MirrorDecryptedTrafficInfo} ${DecryptionProfile}
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${Keyring}:新建或替换证书的参数,字典
... ${MirrorDecryptedTrafficInfo}:新建解密流量参数,字典
... ${DecryptionProfile}:新建或修改属性参数,字典
Run Keyword If "${Keyring}"=="${EMPTY}" or "${Keyring}"=="null" log there is no KeyringInfo
... ELSE Intercept-SSL-Keyring-SearchorCreate ${Keyring}
Run Keyword If "${MirrorDecryptedTrafficInfo}"=="${EMPTY}" or "${MirrorDecryptedTrafficInfo}"=="null" log there is no MirrorDecryptedTrafficInfo
... ELSE Intercept-SSL-MirrorDecryptedTraffic-Open ${MirrorDecryptedTrafficInfo}
Run Keyword If "${DecryptionProfile}"=="${EMPTY}" or "${DecryptionProfile}"=="null" log there is no interceptaddInfo
... ELSE DecryptionProfile-SearchorCreate ${DecryptionProfile}
Intercept-SSL-Keyring-SearchorCreate
[Arguments] ${Keyring}
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${KeySearchorCreate}:填入Create或Search
... ${Name}:新建页面name输入框里的内容
... ${File}:上传文件所在本地的路径
... ${File1}:上传文件所在本地的路径
... ${ExpiryHours1or2}:根证书时间填入1自定义定义 2:原时间
... ${Type}:上传证书类型的元素
... ${Type1}:上传证书加密解密算法的元素
... ${Shift}:是否打开客户端包含证书按钮
... ${PrivateKeyType}:私钥类型
${return} ${KeySearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${Keyring} KeySearchorCreate
${KeySearchorCreate} Run Keyword If "${return}"=="FAIL" or "${KeySearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${KeySearchorCreate}
${return} ${Keyname} Run Keyword And Ignore Error Get From Dictionary ${Keyring} Keyname
${Keyname} Run Keyword If "${return}"=="FAIL" or "${Keyname}"=="${EMPTY}" set variable null
... ELSE set variable ${Keyname}
${return} ${File} Run Keyword And Ignore Error Get From Dictionary ${Keyring} File
${File} Run Keyword If "${return}"=="FAIL" or "${File}"=="${EMPTY}" set variable null
... ELSE set variable ${File}
${return} ${File1} Run Keyword And Ignore Error Get From Dictionary ${Keyring} File1
${File1} Run Keyword If "${return}"=="FAIL" or "${File1}"=="${EMPTY}" set variable null
... ELSE set variable ${File1}
${return} ${ExpiryHours1or2} Run Keyword And Ignore Error Get From Dictionary ${Keyring} ExpiryHours1or2
${ExpiryHours1or2} Run Keyword If "${return}"=="FAIL" or "${ExpiryHours1or2}"=="${EMPTY}" set variable null
... ELSE set variable ${ExpiryHours1or2}
${return} ${Type} Run Keyword And Ignore Error Get From Dictionary ${Keyring} Type
${Type} Run Keyword If "${return}"=="FAIL" or "${Type}"=="${EMPTY}" set variable null
... ELSE set variable ${Type}
${return} ${Type1} Run Keyword And Ignore Error Get From Dictionary ${Keyring} Type1
${Type1} Run Keyword If "${return}"=="FAIL" or "${Type1}"=="${EMPTY}" set variable null
... ELSE set variable ${Type1}
${return} ${Shift} Run Keyword And Ignore Error Get From Dictionary ${Keyring} Shift
${Shift} Run Keyword If "${return}"=="FAIL" or "${Shift}"=="${EMPTY}" set variable null
... ELSE set variable ${Shift}
${return} ${PrivateKeyType} Run Keyword And Ignore Error Get From Dictionary ${Keyring} PrivateKeyType
${PrivateKeyType} Run Keyword If "${return}"=="FAIL" or "${PrivateKeyType}"=="${EMPTY}" set variable null
... ELSE set variable ${PrivateKeyType}
sleep ${sleep}
click element id=interceptionadd_eventkeying1
sleep ${sleep}
run keyword if "${KeySearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_keyadd
... AND sleep ${sleep}
... AND Create-Keyring ${Keyname} ${File} ${File1} ${ExpiryHours1or2} ${Type} ${Type1}
... ${Shift}=close ${PrivateKeyType}=PrivateKeyFile
run keyword if "${KeySearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text id=card_keyringName1 ${Keyname}
... AND sleep ${sleep}
... AND press keys id=card_keyringName1 ENTER
... AND sleep ${sleep}
... AND clcik element id=card_keylist0
Create-Keyring
[Arguments] ${Name} ${File} ${File1} ${ExpiryHours1or2} ${Type} ${Type1}
... ${Shift}=close ${PrivateKeyType}=PrivateKeyFile
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${Name}:新建页面name输入框里的内容
... ${File}:上传文件所在本地的路径
... ${File1}:上传文件所在本地的路径
... ${ExpiryHours1or2}:根证书时间填入1自定义定义 2:原时间
... ${Type}:上传证书类型的元素
... ${Type1}:上传证书加密解密算法的元素
... ${Shift}:是否打开客户端包含证书按钮
... ${PrivateKeyType}:私钥类型
sleep ${sleep}
input id=keyringsadd_name ${Name} #输入name
sleep ${sleep}
Choose File xpath=//*[@id="app"]/div/div[3]/div[2]/div/div/div[2]/div[2]/form/div[2]/div/div/div/input ${File} #上传文件
sleep ${sleep}
Choose File xpath=//*[@id="app"]/div/div[3]/div[2]/div/div/div[2]/div[2]/form/div[3]/div/div[2]/div/div/input ${File1} #上传文件
${select} Set Variable ${ExpiryHours1or2}
Run Keyword If '${select}'=='1' click element id=keyringsadd_customized
Run Keyword If '${select}'=='1' input text id=reissueExpiryDate 10
sleep ${sleep}
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div/div[2]/div[2]/form/div[6]/div/div/div[1]/span/span/i #点击下拉框
sleep ${sleep}
click element ${Type} #选择证书类型
sleep ${sleep}
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div/div[2]/div[2]/form/div[7]/div/div/div[1]/span/span/i #点击下拉框
sleep ${sleep}
click element ${Type1} #选择加密解密类型
sleep ${sleep}
${root} Set Variable ${Shift}
run keyword if "${root}"=="open" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div/div[2]/div[2]/form/div[9]/div/div/span
... ELSE IF "${root}"=="close" log "go on"
Run Keyword If '${PrivateKeyType}'=='HSM' run keywords sleep ${sleep}
... AND click element id=privateHSM
... AND sleep ${sleep}
... AND input text id=keyringsadd_slotid 10
sleep ${sleep}
click id=keyringsadd_sub #点击OK缇交
Intercept-SSL-MirrorDecryptedTraffic-Open
[Arguments] ${MirrorDecryptedTrafficInfo}
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${MirrorDecryptedTraffic}:输入open代表开启按钮其他代表不开启
... ${MirrorDecryptedTrafficSearchorCreate}填入Create或Search
... ${MirrorDecryptedTrafficname}:解密流量文件的name
... ${Type}:是mac还是vlan的定位元素
... ${Shuru}:输入mac或vlan的值
${return} ${MirrorDecryptedTraffic} Run Keyword And Ignore Error Get From Dictionary ${MirrorDecryptedTrafficInfo} MirrorDecryptedTraffic
${MirrorDecryptedTraffic} Run Keyword If "${return}"=="FAIL" or "${MirrorDecryptedTraffic}"=="${EMPTY}" set variable null
... ELSE set variable ${MirrorDecryptedTraffic}
${return} ${MirrorDecryptedTrafficSearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${MirrorDecryptedTrafficInfo} MirrorDecryptedTrafficSearchorCreate
${MirrorDecryptedTrafficSearchorCreate} Run Keyword If "${return}"=="FAIL" or "${MirrorDecryptedTrafficSearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${MirrorDecryptedTrafficSearchorCreate}
${return} ${MirrorDecryptedTrafficname} Run Keyword And Ignore Error Get From Dictionary ${MirrorDecryptedTrafficInfo} MirrorDecryptedTrafficname
${MirrorDecryptedTrafficname} Run Keyword If "${return}"=="FAIL" or "${MirrorDecryptedTrafficname}"=="${EMPTY}" set variable null
... ELSE set variable ${MirrorDecryptedTrafficname}
${return} ${Type} Run Keyword And Ignore Error Get From Dictionary ${MirrorDecryptedTrafficInfo} Type
${Type} Run Keyword If "${return}"=="FAIL" or "${Type}"=="${EMPTY}" set variable null
... ELSE set variable ${Type}
${return} ${Shuru} Run Keyword And Ignore Error Get From Dictionary ${MirrorDecryptedTrafficInfo} Shuru
${Shuru} Run Keyword If "${return}"=="FAIL" or "${Shuru}"=="${EMPTY}" set variable null
... ELSE set variable ${Shuru}
sleep ${sleep}
run keyword if "${MirrorDecryptedTraffic}"=="open" run keywords sleep ${sleep}
... AND click element xpath=///*[@id="policy_paper_left"]/div[10]/div[2]/label[contains(text(), "Mirror Decrypted Traffic")]/following-sibling::div/div
... AND sleep ${sleep}
... AND clcik element id=mirror_profile
... AND MirrorDecryptedTraffic-SearchorCreate ${MirrorDecryptedTrafficSearchorCreate} ${MirrorDecryptedTrafficname} ${Type} ${Shuru}
... ELSE log 不开启
MirrorDecryptedTraffic-SearchorCreate
[Arguments] ${MirrorDecryptedTrafficSearchorCreate} ${MirrorDecryptedTrafficname} ${Type} ${Shuru}
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${MirrorDecryptedTrafficSearchorCreate}填入Create或Search
... ${MirrorDecryptedTrafficname}:解密流量文件的name
... ${Type}:是mac还是vlan的定位元素
... ${Shuru}:输入mac或vlan的值
sleep ${sleep}
run keyword if "${MirrorDecryptedTrafficSearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_trarightadd
... AND sleep ${sleep}
... AND Create-MirrorDecryptedTraffic ${MirrorDecryptedTrafficname} ${Type} ${Shuru}
run keyword if "${MirrorDecryptedTrafficSearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text id=tradata_profileName ${MirrorDecryptedTrafficname}
... AND sleep ${sleep}
... AND press keys id=tradata_profileName ENTER
... AND sleep ${sleep}
... AND clcik element id=tralist_length0
Create-MirrorDecryptedTraffic
[Arguments] ${MirrorDecryptedTrafficname} ${Type} ${Shuru}
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${MirrorDecryptedTrafficname}:解密流量文件的name
... ${Type}:是mac还是vlan的定位元素
... ${Shuru}:输入mac或vlan的值
sleep ${sleep}
input id=trafficmirror_profileName ${MirrorDecryptedTrafficname} #输入name
sleep ${sleep}
click id=addrTypeChoose #点击下拉框
sleep ${sleep}
click ${Type} #选择vlan或者mac
sleep ${sleep}
input id=trafficmirror_addrArray0 ${Shuru}
sleep ${sleep}
click xpath=//*[@id="app"]/div/div[3]/div[2]/div/div/div[2]/button[1] #点击OK
DecryptionProfile-SearchorCreate
[Arguments] ${DecryptionProfile}
[Documentation] 引用次关键字,填入必填参数
... 必填参数:
... ${DecryptionProfileSearchorCreate}填入Create或Search
... ${DecryptionProfilename}:文件name
... ${Dict1}:是个字典等于1为开启等于0为关闭例如Common Name=1 Issuer=1 Self-signed=1 Expiry Date=1 EV Certificat=1
... Certificate Transparency=1 Mutual Authentication=1 On Protocol Errors=1 Certificate Pinning=1 Certificate Not Installed=1 Mirror Client Versions=1
... Allow HTTP/2=1
... ${Fail1} :输入Fail-close或Pass-through
... ${Min1}:输入协议版本,
... ${Max1}:输入协议版本,
${return} ${DecryptionProfileSearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} DecryptionProfileSearchorCreate
${DecryptionProfileSearchorCreate} Run Keyword If "${return}"=="FAIL" or "${DecryptionProfileSearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${DecryptionProfileSearchorCreate}
${return} ${DecryptionProfilename} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} DecryptionProfilename
${DecryptionProfilename} Run Keyword If "${return}"=="FAIL" or "${DecryptionProfilename}"=="${EMPTY}" set variable null
... ELSE set variable ${DecryptionProfilename}
${return} ${Dict1} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} Dict1
${Dict1} Run Keyword If "${return}"=="FAIL" or "${Dict1}"=="${EMPTY}" set variable null
... ELSE set variable ${Dict1}
${return} ${Fail1} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} Fail1
${Fail1} Run Keyword If "${return}"=="FAIL" or "${Fail1}"=="${EMPTY}" set variable null
... ELSE set variable ${Fail1}
${return} ${Min1} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} Min1
${Min1} Run Keyword If "${return}"=="FAIL" or "${Min1}"=="${EMPTY}" set variable null
... ELSE set variable ${Min1}
${return} ${Max1} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} Max1
${Max1} Run Keyword If "${return}"=="FAIL" or "${Max1}"=="${EMPTY}" set variable null
... ELSE set variable ${Max1}
sleep ${sleep}
click element id=interceptionadd_eventkeying
sleep ${sleep}
run keyword if "${DecryptionProfileSearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_decryptionProfileId
... AND sleep ${sleep}
... AND Create-DecryptionProfile ${DecryptionProfilename} ${Dict1} ${Fail1} ${Min1} ${Max1}
run keyword if "${DecryptionProfileSearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text id=card_keyringName ${DecryptionProfilename}
... AND sleep ${sleep}
... AND press keys id=card_keyringName ENTER
... AND sleep ${sleep}
... AND clcik element xpath=//*[@id="decryptionProfileList"]/following-sibling::li[2]
Create-DecryptionProfile
[Arguments] ${Name} ${Dict1} ${Fail1} ${Min1} ${Max1}
sleep ${sleep}
input id=insert_profileName ${Name}
sleep ${sleep}
DecryptionProfileButtonSwitch ${Dict1} //*[@id="policy_Manipulation_create8"]/div[2]/form/div/div/label[contains(text(), " ")]/following-sibling::div/div el-switch is-checked el-switch
${fail} Set Variable ${Fail1}
run keyword if "${fail}"=="Fail-close" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[3]/div[5]/div/div/label[1]/span
... ELSE IF "${fail}"=="Pass-through" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[3]/div[5]/div/div/label[2]/span
... ELSE log 1111
${min} Set Variable ${Min1}
${max} Set Variable ${Max1}
run keyword if "${min}"=="TLSv1.0" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[2]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_min1
... ELSE IF "${min}"=="TLSv1.1" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[2]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_min2
... ELSE IF "${min}"=="TLSv1.2" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[2]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_min3
... ELSE IF "${min}"=="TLSv1.3" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[2]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_min4
... ELSE IF "${min}"=="SSLv3.0" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[2]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_min0
... ELSE log 错误
run keyword if "${max}"=="TLSv1.0" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[3]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_max1
... ELSE IF "${max}"=="TLSv1.1" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[3]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_max2
... ELSE IF "${max}"=="TLSv1.2" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[3]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_max3
... ELSE IF "${max}"=="TLSv1.3" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[3]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_max4
... ELSE IF "${max}"=="SSLv3.0" Run Keywords sleep ${sleep}
... AND click xpath=//*[@id="policy_Manipulation_create8"]/div[2]/form/div[7]/div[3]/div/div/div/span/span/i
... AND sleep ${sleep}
... AND click id=pro_max0
... ELSE log 错误
sleep ${sleep}
click id=decryption-ok
sleep ${sleep}
Settings-Search ${Name} ${search} #搜索框的关键字
sleep ${sleep}
${name1} get text xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[3]/div/div/div[2]/div/div[3]/table/tbody/tr/td[2]/div/div/span
Should Be Equal As Strings ${name1} ${Name}
DecryptionProfileButtonSwitch
[Arguments] ${Dict1} ${xpath1} ${xpath2} ${open} ${close}
${dict} Set Variable ${Dict1}
FOR ${list} ${key} IN ENUMERATE @{dict}
${class}= Get Element Attribute xpath=${xpath1}${key}${xpath2} class
run keyword if "${class}"=="${open}" and "${dict}[${key}]"=="1" log 默认开启,不进行操作
run keyword if "${class}"=="${open}" and "${dict}[${key}]"=="0" Run Keywords log 默认开启,但需求需要关闭,进行点击关闭按钮
... AND sleep ${sleep}
... AND click xpath=${xpath1}${key}${xpath2}/span
run keyword if "${class}"=="${close}" and "${dict}[${key}]"=="1" Run Keywords log 默认关闭,但需求需要开启,进行点击开启按钮
... AND sleep ${sleep}
... AND click xpath=${xpath1}${key}${xpath2}/span
run keyword if "${class}"=="${close}" and "${dict}[${key}]"=="0" log 默认关闭,不进行操作
END
LogSession
[Arguments] ${LogSession}
[Documentation] 调用次关键字前需要添加必填参数:
... ${LogSession}:填入clcos或其他
run keyword if "${LogSession}"=="close" run keywords sleep ${sleep}
... AND click element id=addlabel_labels_log
... ELSE log 开启日志
Enabled
[Arguments] ${Enabled}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Enabled}:填入open或其他
run keyword if "${Enabled}"=="open" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="policy_paper_left"]/div/label[contains(text(), "Enabled")]/following-sibling::div/div
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div/div[3]/button[2]
... ELSE log 开启日志
Security-Policies-OK
sleep ${sleep}
click element id=interceptionadd_sub
Create-Object-Search
[Arguments] ${Name} ${filter}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:填入是一个列表列表内容为object的name
... 选择search对象
sleep ${sleep}
click element xpath=//*[@id="policy_paper_left"]/div[8]/div/div[1]/label[contains(text(), "${filter}")]/following-sibling::div/div
sleep ${sleep}
FOR ${i} IN @{name}
input text xpath=//*[@id="condistions_protocol"]/div[2]/p[contains(text(), "${filter}")]/following-sibling::div[2]/div/div[1]/input ${i}
sleep ${sleep}
press keys xpath=//*[@id="condistions_protocol"]/div[2]/p[contains(text(), "${filter}")]/following-sibling::div[2]/div/div[1]/input ENTER
sleep ${sleep}
click element xpath=//*[@id="condistions_protocol"]/div[2]/p[contains(text(), "${filter}")]/following-sibling::div[2]/div/div[2]/div/div/ul/li[1]
sleep ${sleep}
END
SourceIPCreateOrSearch
[Arguments] ${PolicyType} ${CreateOrSearch} ${Add} ${Ip_type} ${Name} ${ObjectName} ${Ipclienttext1}
... ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
[Documentation] 调用次关键字前需要添加必填参数:
... ${CreateOrSearch}:填入Create或者Search
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... ${ObjectName}:列表形式,列表中是对象的名字
... 判断是新建ip还是搜索添加ip
run keyword if "${CreateOrSearch}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_proaddaddSource
... AND SourceIPAdd ${PolicyType} ${Add} ${Ip_type} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${CreateOrSearch}"=="Search" run keywords sleep ${sleep}
... AND SourceSearch ${PolicyType} ${ObjectName}
SUBIDCreateOrSearch
[Arguments] ${PolicyType} ${CreateOrSearch} ${Add} ${Name} ${Keywordtext} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${CreateOrSearch}:填入Create或者Search
... ${Name}:名称
... ${Keywordtext}:填入新建subid的内容
... ${ObjectName}:列表形式,列表中是对象的名字
... 判断是新建subid还是搜索添加subid
run keyword if "${CreateOrSearch}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_proaddaddSource
... AND SUBIDAdd ${PolicyType} ${Add} ${Name} ${Keywordtext} ${ObjectName}
... ELSE IF "${CreateOrSearch}"=="Search" run keywords sleep ${sleep}
... AND SourceSearch ${PolicyType} ${ObjectName}
DestinationIPCreateOrSearch
[Arguments] ${PolicyType} ${CreateOrSearch} ${Add} ${Ip_type} ${Name} ${ObjectName} ${Ipclienttext1}
... ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
[Documentation] 调用次关键字前需要添加必填参数:
... ${CreateOrSearch}:填入Create或者Search
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... ${ObjectName}:列表形式,列表中是对象的名字
... 判断是新建ip还是搜索添加ip
run keyword if "${CreateOrSearch}"=="Create" run keywords sleep ${sleep}
... AND click element id=interceptionadd_proaddaddDestination
... AND DestinationIPAdd ${PolicyType} ${Add} ${Ip_type} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${CreateOrSearch}"=="Search" run keywords sleep ${sleep}
... AND DestinationSearch ${PolicyType} ${ObjectName}
SourceSearch
[Arguments] ${PolicyType} ${Name}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:填入是一个列表列表内容为source的name
... 选择search对象
FOR ${i} IN @{name}
input text xpath=${PolicyType}/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ${i}
sleep ${sleep}
press keys xpath=${PolicyType}/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ENTER
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[1]/div[2]/div[2]/div/div[2]/div/div/ul/li[1]
sleep ${sleep}
END
DestinationSearch
[Arguments] ${PolicyType} ${Name}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:填入是一个列表列表内容为source的name
... 选择search对象
FOR ${i} IN @{name}
input text xpath=${PolicyType}/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ${i}
sleep ${sleep}
press keys xpath=${PolicyType}/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ENTER
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[1]/div[2]/div[2]/div/div[2]/div/div/ul/li[1]
sleep ${sleep}
END
SUBIDAdd
[Arguments] ${PolicyType} ${Add} ${Name} ${Keywordtext} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Add}:填入Address或Group
... ${Name}:名称
... ${Keywordtext}:填入新建subid的内容
... ${ObjectName}:列表形式,列表中是对象的名字
... 判断是新建subid还是新建subid分组
run keyword if "${Add}"=="Address" run keywords sleep ${sleep}
... AND click element xpath=/html/body/ul/li[1]
... AND sleep ${sleep}
... AND SUBAddress ${PolicyType} ${Name} ${Keywordtext}
... ELSE IF "${Add}"=="Group" run keywords sleep ${sleep}
... AND click element xpath=/html/body/ul/li[2]
... AND sleep ${sleep}
... AND SUBGroupAdd ${PolicyType} ${Name} ${ObjectName}
SUBAddress
[Arguments] ${PolicyType} ${Name} ${Keywordtext}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Keywordtext}:填入新建subid的内容
... 新建subid
SourceCreate-name ${Name}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div[1]
sleep ${sleep}
Create-SubscriberID-text ${Keywordtext}
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[2]/button[1]
SUBGroupAdd
[Arguments] ${PolicyType} ${Name} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${ObjectName}:列表形式,列表中是对象的名字
... 新建subid分组
SourceCreate-name ${Name}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]
sleep ${sleep}
Create-Sub-Objects ${ObjectName}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[2]/button[1]
SourceIPAdd
[Arguments] ${PolicyType} ${Add} ${Ip_type} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Add}:填入Address或Group
... ${Ip_type}:填入IP或者Geography或者IPLearning
... 判断是新建ip还是新建ip分组
run keyword if "${Add}"=="Address" run keywords sleep ${sleep}
... AND click element xpath=/html/body/ul/li[1]
... AND sleep ${sleep}
... AND SourceIPAddress ${PolicyType} ${Name} ${Ip_type} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${Add}"=="Group" run keywords sleep ${sleep}
... AND click element xpath=/html/body/ul/li[2]
... AND sleep ${sleep}
... AND SourceIPGroupAdd ${PolicyType} ${Name} ${Ip_type} ${ObjectName}
SourceIPAddress
[Arguments] ${PolicyType} ${Name} ${Ip_type} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... 判断 新建选择用什么样的类型,并进行新建
SourceCreate-name ${Name}
sleep ${sleep}
run keyword if "${Ip_type}"=="Ip" run keywords click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
... AND sleep ${sleep}
... AND NewObject.Create-ip-ClientIP-text ${Ipclienttext1} ${Port}
run keyword if "${Ip_type}"=="Geography" run keywords click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/label[2]
... AND sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]/div[2]
... AND sleep ${sleep}
... AND NewObject.Create-Geography ${Country} ${City}
... AND sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[10]/div/div/div/div[4]/button
... AND sleep ${sleep}
run keyword if "${Ip_type}"=="IPLearning" run keywords click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/label[3]
... AND sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[3]/div/div[1]/div[2]/div[1]/div[1]/form/div[1]/div/div[1]/input ${Fqdn}
... AND sleep ${sleep}
... AND click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[5]/div[1]/div/div/div[2]
... AND sleep ${sleep}
... AND UIPolicy.Learn-From-Protocols ${Protocols1}
... AND UIPolicy.Learning-Depth ${PolicyType} ${Degree}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[5]/div[3]/div/div[1]/input ${Times}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[5]/div[4]/div/div[1]/input ${Numbers}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[5]/div[5]/div/div[1]/input ${Limits}
... AND sleep ${sleep}
sleep ${sleep}
SourceCreate-ok
DestinationIPAdd
[Arguments] ${PolicyType} ${Add} ${Ip_type} ${Name} ${ObjectName} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Add}:填入Address或Group
... ${Ip_type}:填入IP或者Geography或者IPLearning
... 判断是新建ip还是新建ip分组
run keyword if "${Add}"=="Address" run keywords sleep ${sleep}
... AND click element xpath=/html/body/ul[contains(@id,'dropdown-menu' )and @x-placement='bottom-start']/child::li[1]
... AND sleep ${sleep}
... AND DestinationIPAddress ${PolicyType} ${Name} ${Ip_type} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
... ELSE IF "${Add}"=="Group" run keywords sleep ${sleep}
... AND click element xpath=/html/body/ul[contains(@id,'dropdown-menu' )and @x-placement='bottom-start']/child::li[2]
... AND sleep ${sleep}
... AND DestinationIPGroupAdd ${PolicyType} ${Name} ${Ip_type} ${ObjectName}
DestinationIPAddress
[Arguments] ${PolicyType} ${Name} ${Ip_type} ${Ipclienttext1} ${Port} ${Country} ${City} ${Fqdn} ${Protocols1} ${Degree} ${Times} ${Numbers} ${Limits}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography或者IPLearning
... ${Ipclienttext1}:填入IPV4或6的值或range的ip段
... ${Port}:填入端口
... ${Country}:列表形式,列表中是国家名字
... ${City}:列表形式,列表中是城市名字
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
... ${Degree}:填入1Degree或2Degree
... ${Times}:填入小时数例如1或2
... ${Numbers}:填入数值例如1或10000
... ${Limits}:填入数值例如1或10000
... 判断 新建选择用什么样的类型,并进行新建
DestinationCreate-name ${PolicyType} ${Name}
sleep ${sleep}
run keyword if "${Ip_type}"=="Ip" run keywords click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
... AND sleep ${sleep}
... AND NewObject.Create-ip-ClientIP-text ${Ipclienttext1} ${Port}
run keyword if "${Ip_type}"=="Geography" run keywords click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/label[2]
... AND sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]/div[2]
... AND sleep ${sleep}
... AND NewObject.Create-Geography ${Country} ${City}
... AND sleep ${sleep}
... AND click element id=interceptionadd_allcancelobjec3t
... AND sleep ${sleep}
run keyword if "${Ip_type}"=="IPLearning" run keywords click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/label[3]
... AND sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[3]/div/div[1]/div[2]/div[1]/div[1]/form/div[1]/div/div[1]/input ${Fqdn}
... AND sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[1]/div/div/div[2]
... AND sleep ${sleep}
... AND UIPolicy.Learn-From-Protocols ${Protocols1}
... AND UIPolicy.Learning-Depth ${PolicyType} ${Degree}
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[3]/div/div[1]/input ${Times}
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[4]/div/div[1]/input ${Numbers}
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[5]/div/div[1]/input ${Limits}
... AND sleep ${sleep}
DestinationCreate-ok ${PolicyType}
Learn-From-Protocols
[Arguments] ${Protocols1}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Protocols1}:填入HTTP或SSL或者HTTPSSL
... 判断选择用什么样的协议
run keyword if "${Protocols1}"=="HTTP" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[1]
run keyword if "${Protocols1}"=="SSL" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
run keyword if "${Protocols1}"=="HTTPSSL" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[1]
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
Learning-Depth
[Arguments] ${PolicyType} ${Degree}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Degree}:填入1Degree或2Degree
... 判断是用1Degree或2Degree
run keyword if "${Degree}"=="1Degree" run keywords sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[2]/div/div/label[1]
run keyword if "${Degree}"=="2Degree" run keywords sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[2]/div/div/label[2]
SourceIPGroupAdd
[Arguments] ${PolicyType} ${Name} ${Ip_type} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography
... ${ObjectName}:列表形式,列表中是对象的名字
SourceCreate-name ${Name}
Select-ip_type ${Ip_type}
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]
Create-Sub-Objects ${ObjectName}
NewObject.Create-ok
DestinationIPGroupAdd
[Arguments] ${PolicyType} ${Name} ${Ip_type} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography
... ${ObjectName}:列表形式,列表中是对象的名字
SourceCreate-name ${Name}
Select-ip_type ${Ip_type}
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]
Create-Sub-Objects ${ObjectName}
NewObject.Create-ok
SourceCreate-name
[Arguments] ${ObjName}
sleep ${sleep}
input text id=objectAdd_name ${ObjName}
SourceCreate-ok
sleep ${sleep}
click button id=objectAdd_ok
DestinationCreate-name
[Arguments] ${PolicyType} ${ObjName}
input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[1]/div/div[1]/input ${ObjName}
DestinationCreate-ok
[Arguments] ${PolicyType}
sleep ${sleep}
click button xpath=${PolicyType}/div[2]/div[2]/div/div[2]/button[1]
Security-Source
[Arguments] ${SourceType} ${SourceValue}
Wait Until Element Is Enabled xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/div/div[2]/div/div 10
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/div/div[2]/div/div
sleep ${sleep}
run keyword if "${SourceType}"=="ID" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
run keyword if "${SourceType}"=="Name" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[3]
run keyword if "${SourceType}"=="Action" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[4]
sleep ${sleep}
input text xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/div/div[2]/div/div[1]/div[3]/div/input ${SourceValue}
sleep ${sleep}
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/i
sleep ${sleep}
click element xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr[1]
sleep ${sleep}
EditButton
sleep ${sleep}
click element xpath=//*[@id="appEdit"]/span/div/div[2]
sleep ${sleep}
Initialize-Policie
[Arguments] ${InitializeAction}
[Documentation] 调用次关键字前需要添加必填参数:
... ${InitializeAction}:根据用例进行填写意思就是是那一个action就不要点击哪一个以免初始化失败
run keyword if "${InitializeAction}"=="Allow" run keywords sleep ${sleep}
... AND click element id=security_action_deny
... AND sleep ${sleep}
... ELSE IF "${InitializeAction}"=="Deny" run keywords sleep ${sleep}
... AND click element id=security_action_allow
... ELSE IF "${InitializeAction}"=="Monitor" run keywords sleep ${sleep}
... AND click element id=security_action_deny
... ELSE IF "${InitializeAction}"=="Intercept" run keywords sleep ${sleep}
... AND click element id=security_action_deny
... ELSE log 不修改
sleep ${sleep}
${status} Run Keyword And Return Status Page should contain element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form[1]/div/div[4]/div[1]/div/div/div #判断页面是否包含该元素
run keyword if "${status}"=="False" log go on
run keyword if "${status}"=="True" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form[1]/div/div[4]/div[1]/div/div/div/p/span/span/i[2]
... AND sleep ${sleep}
${status1} Run Keyword And Return Status Page should contain element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form[1]/div/div[5]/div[1]/div/div/div #判断页面是否包含该元素
run keyword if "${status1}"=="False" log go on
run keyword if "${status1}"=="True" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form[1]/div/div[5]/div[1]/div/div/div/p/span/span/i[2]
... AND sleep ${sleep}
Proxy-Deny
[Arguments] ${ProxyDenyadd}
[Documentation] 调用次关键字前需要添加必填参数:
... ${DenyCode}:填入403或404或451
... ${Action}:填入deny
... ${Code}:填入403或404
... ${Content}:填入TEXT或Profile
... ${SearchorCreate}:填入Search或Create
... ${BlockText}:填入TEXT文本框内容
... ${ProfileName}:Profile的名字
... ${File}:上传文件路径
... ${TextValue}:填入text输入框内容
... 添加subaction
${return} ${Action} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} Action
${Action} Run Keyword If "${return}"=="FAIL" or "${Action}"=="${EMPTY}" set variable null
... ELSE set variable ${Action}
${return} ${DenyCode} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} DenyCode
${DenyCode} Run Keyword If "${return}"=="FAIL" or "${DenyCode}"=="${EMPTY}" set variable null
... ELSE set variable ${DenyCode}
${return} ${ContentType} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} ContentType
${ContentType} Run Keyword If "${return}"=="FAIL" or "${ContentType}"=="${EMPTY}" set variable null
... ELSE set variable ${ContentType}
${return} ${SearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} SearchorCreate
${SearchorCreate} Run Keyword If "${return}"=="FAIL" or "${SearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${SearchorCreate}
${return} ${ProfileName} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} ProfileName
${ProfileName} Run Keyword If "${return}"=="FAIL" or "${ProfileName}"=="${EMPTY}" set variable null
... ELSE set variable ${ProfileName}
${return} ${File} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} File
${File} Run Keyword If "${return}"=="FAIL" or "${ProfileName}"=="${EMPTY}" set variable null
... ELSE set variable ${File}
${return} ${TextValue} Run Keyword And Ignore Error Get From Dictionary ${ProxyDenyadd} TextValue
${TextValue} Run Keyword If "${return}"=="FAIL" or "${TextValue}"=="${EMPTY}" set variable null
... ELSE set variable ${TextValue}
Deny-subaction ${Action} ${DenyCode}
sleep ${sleep}
Deny-content ${ContentType} ${SearchorCreate} ${ProfileName} ${File} ${TextValue}
Deny-subaction
[Arguments] ${Action} ${DenyCode}
[Documentation] 调用次关键字前需要添加必填参数:
... ${DenyCode}:填入403或404或451
... ${Action}:填入deny
... 添加subaction
${return} ${DecryptionProfileSearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${DecryptionProfile} DecryptionProfileSearchorCreate
${DecryptionProfileSearchorCreate} Run Keyword If "${return}"=="FAIL" or "${DecryptionProfileSearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${DecryptionProfileSearchorCreate}
run keyword if "${Action}"=="Deny" and "${DenyCode}"=="403" run keywords sleep ${sleep}
... AND click element id=manipulation_select_addAction
... AND sleep ${sleep}
... AND click element //span[.="${DenyCode}"]
... AND sleep ${sleep}
run keyword if "${Action}"=="Deny" and "${DenyCode}"=="404" run keywords sleep ${sleep}
... AND click element id=manipulation_select_addAction
... AND sleep ${sleep}
... AND click element //span[.="${DenyCode}"]
... AND sleep ${sleep}
run keyword if "${Action}"=="Deny" and "${DenyCode}"=="451" run keywords sleep ${sleep}
... AND click element id=manipulation_select_addAction
... AND sleep ${sleep}
... AND click element //span[.="${DenyCode}"]
... AND sleep ${sleep}
... AND
Deny-content
[Arguments] ${ContentType}=File ${SearchorCreate}=null ${ProfileName}=null ${File}=null ${TextValue}=null
[Documentation] 调用次关键字前需要添加必填参数:
... ${Code}:填入403或404
... ${Content}:填入TEXT或Profile
... ${SearchorCreate}:填入Search或Create
... ${BlockText}:填入TEXT文本框内容
... ${ProfileName}:Profile的名字
... ${File}:上传文件路径
... ${TextValue}:填入text输入框内容
... 添加block数据内容
sleep ${sleep}
run keyword if "${ContentType}"=="File" run keywords sleep ${sleep}
... AND click element id=manipulation_select_blockInfo
... AND sleep ${sleep}
... AND click element id=ResponseContentFile
... AND sleep ${sleep}
... AND click element id=manipulation_select_htmlProfile
... AND sleep ${sleep}
... AND Profile-SearchorCreate ${SearchorCreate} ${ProfileName} ${File}
run keyword if "${ContentType}"=="Text" run keywords sleep ${sleep}
... AND click element id=manipulation_select_blockInfo
... AND sleep ${sleep}
... AND click ellement id=ResponseContentText
... AND sllep 1
... AND input text id=manipulation_elInput_blockselect ${TextValue}
... AND sleep ${sleep}
Profile-SearchorCreate_bak
[Arguments] ${SearchorCreate} ${ProfileName} ${File}
[Documentation] 调用次关键字前需要添加必填参数:
... ${SearchorCreate}:填入Search或Create
... ${ProfileName}:Profile的名字
... ${File}:上传文件路径
... 判断是新建还是搜索profile
sleep ${sleep}
run keyword if "${SearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ${ProfileName}
... AND sleep ${sleep}
... AND press keys xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ENTER
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[2]/div/li[1]
... AND sleep ${sleep}
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[1]/div/div/button
... AND sleep ${sleep}
... AND input text id=responsepages_profileName ${ProfileName}
... AND sleep ${sleep}
... AND Choose File xpath=//*[@id="policy_Manipulation_create6"]/div[2]/form/div[2]/div/div/div/input ${File} #上传文件
... AND sleep ${sleep}
... AND click element id=responseAddOk1
... AND sleep ${sleep}
... ELSE log 传入参数错误
Deny-Redirect_bak
[Arguments] ${DenyRedirectadd}
[Documentation] 调用次关键字前需要添加必填参数:${DenyRedirectadd}是个字典,字典中的数据为下
... ${QType}:填入A或AAAA
... ${Avalue}:根据${QType}填入IPV4或IPV6的值
... ${Attl}:根据${QType}填入A的ttl值或AAAA的ttl值
... ${CNAMEvalue}:根据${QType}填入A的CNAME的域名值或AAAA的CNAME域名值
... ${CNAMEttl}:根据${QType}填入A的CNAME的ttl值或AAAA的CNAME的ttl值
... 新建Redirect
${return} ${QType} Run Keyword And Ignore Error Get From Dictionary ${DenyRedirectadd} QType
${QType} Run Keyword If "${return}"=="FAIL" or "${QType}"=="${EMPTY}" set variable null
... ELSE set variable ${QType}
${return} ${Avalue} Run Keyword And Ignore Error Get From Dictionary ${DenyRedirectadd} Avalue
${Avalue} Run Keyword If "${return}"=="FAIL" or "${Avalue}"=="${EMPTY}" set variable null
... ELSE set variable ${Avalue}
${return} ${Attl} Run Keyword And Ignore Error Get From Dictionary ${DenyRedirectadd} Attl
${Attl} Run Keyword If "${return}"=="FAIL" or "${Attl}"=="${EMPTY}" set variable null
... ELSE set variable ${Attl}
${return} ${CNAMEvalue} Run Keyword And Ignore Error Get From Dictionary ${DenyRedirectadd} CNAMEvalue
${CNAMEvalue} Run Keyword If "${return}"=="FAIL" or "${CNAMEvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${CNAMEvalue}
${return} ${CNAMEttl} Run Keyword And Ignore Error Get From Dictionary ${DenyRedirectadd} CNAMEttl
${CNAMEttl} Run Keyword If "${return}"=="FAIL" or "${CNAMEttl}"=="${EMPTY}" set variable null
... ELSE set variable ${CNAMEttl}
sleep ${sleep}
click element id=interceptionadd_add_filter
sleep ${sleep}
run keyword if "${QType}"=="A" run keywords sleep ${sleep}
... AND input text id=A00 ${Avalue}
... AND sleep ${sleep}
... AND input text id=ttl00 ${Attl}
... AND sleep ${sleep}
... AND click element id=interceptionadd_addForm
... AND sleep ${sleep}
... AND input text id=Cname01 ${CNAMEvalue}
... AND sleep ${sleep}
... AND input text id=ttl01 ${CNAMEttl}
run keyword if "${QType}"=="AAAA" run keywords sleep ${sleep}
... AND click element id=dns_qtype_radio01
... AND input text id=AAAA00 ${Avalue}
... AND sleep ${sleep}
... AND input text id=ttl00 ${Attl}
... AND sleep ${sleep}
... AND click element id=interceptionadd_addForm
... AND sleep ${sleep}
... AND input text id=Cname01 ${CNAMEvalue}
... AND sleep ${sleep}
... AND input text id=ttl01 ${CNAMEttl}
sleep ${sleep}
click element id=interceptionadd_shezhidns
Replace-Action-Parameters-for1
[Arguments] ${ReplaceActionParameters}
[Documentation] 调用次关键字前需要添加必填参数:${ReplaceActionParameters}是个字典,字典中的数据为下
... ${ParametersType}:列表格式Search 下拉框中内容
... ${xxxFind}是Find输入框输入的值
... ${XXXReplacewith} :是 Replacewith输入框中输入的值
${return} ${ParametersType} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} ParametersType
${ParametersType} Run Keyword If "${return}"=="FAIL" or "${ParametersType}"=="${EMPTY}" set variable null
... ELSE set variable ${ParametersType}
${return} ${RequestURIFind} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} RequestURIFind
${RequestURIFind} Run Keyword If "${return}"=="FAIL" or "${RequestURIFind}"=="${EMPTY}" set variable null
... ELSE set variable ${RequestURIFind}
${return} ${RequestURIReplacewith} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} RequestURIReplacewith
${RequestURIReplacewith} Run Keyword If "${return}"=="FAIL" or "${RequestURIReplacewith}"=="${EMPTY}" set variable null
... ELSE set variable ${RequestURIReplacewith}
${return} ${RequestBodyFind} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} RequestBodyFind
${RequestBodyFind} Run Keyword If "${return}"=="FAIL" or "${RequestBodyFind}"=="${EMPTY}" set variable null
... ELSE set variable ${RequestBodyFind}
${return} ${RequestBodyReplacewith} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} RequestBodyReplacewith
${RequestBodyReplacewith} Run Keyword If "${return}"=="FAIL" or "${RequestBodyReplacewith}"=="${EMPTY}" set variable null
... ELSE set variable ${RequestBodyReplacewith}
${return} ${ResponseBodyFind} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} ResponseBodyFind
${ResponseBodyFind} Run Keyword If "${return}"=="FAIL" or "${ResponseBodyFind}"=="${EMPTY}" set variable null
... ELSE set variable ${ResponseBodyFind}
${return} ${ResponseBodyReplacewith} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} ResponseBodyReplacewith
${ResponseBodyReplacewith} Run Keyword If "${return}"=="FAIL" or "${ResponseBodyReplacewith}"=="${EMPTY}" set variable null
... ELSE set variable ${ResponseBodyReplacewith}
${return} ${RequestHeaderFind} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} RequestHeaderFind
${RequestHeaderFind} Run Keyword If "${return}"=="FAIL" or "${RequestHeaderFind}"=="${EMPTY}" set variable null
... ELSE set variable ${RequestHeaderFind}
${return} ${RequestHeaderReplacewith} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} RequestHeaderReplacewith
${RequestHeaderReplacewith} Run Keyword If "${return}"=="FAIL" or "${RequestHeaderReplacewith}"=="${EMPTY}" set variable null
... ELSE set variable ${RequestHeaderReplacewith}
${return} ${ResponseHeaderFind} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} ResponseHeaderFind
${ResponseHeaderFind} Run Keyword If "${return}"=="FAIL" or "${ResponseHeaderFind}"=="${EMPTY}" set variable null
... ELSE set variable ${ResponseHeaderFind}
${return} ${ResponseHeaderReplacewith} Run Keyword And Ignore Error Get From Dictionary ${ReplaceActionParameters} ResponseHeaderReplacewith
${ResponseHeaderReplacewith} Run Keyword If "${return}"=="FAIL" or "${ResponseHeaderReplacewith}"=="${EMPTY}" set variable null
... ELSE set variable ${ResponseHeaderReplacewith}
${len} Get Length ${ParametersType}
${len1} evaluate ${len}+1
FOR ${i} IN RANGE 1 ${len1}
Replace-Action-Parameters-for2 ${ParametersType} ${i} ${RequestURIFind} ${RequestURIReplacewith} ${RequestBodyFind} ${RequestBodyReplacewith} ${ResponseBodyFind}
... ${ResponseBodyReplacewith} ${RequestHeaderFind} ${RequestHeaderReplacewith} ${ResponseHeaderFind} ${ResponseHeaderReplacewith}
sleep ${sleep}
run keyword if "${len}"!="1" run keywords sleep ${sleep}
... AND clcik element id=replaceadd_btn
... AND sleep ${sleep}
END
sleep ${sleep}
Replace-Action-Parameters-for2
[Arguments] ${ParametersType} ${i} ${RequestURIFind} ${RequestURIReplacewith} ${RequestBodyFind} ${RequestBodyReplacewith} ${ResponseBodyFind}
... ${ResponseBodyReplacewith} ${RequestHeaderFind} ${RequestHeaderReplacewith} ${ResponseHeaderFind} ${ResponseHeaderReplacewith}
[Documentation] 调用次关键字前需要添加必填参数:
... ${ParametersType}:列表格式Search 下拉框中内容
... ${i}:索引值
... ${xxxFind}是Find输入框输入的值
... ${XXXReplacewith} :是 Replacewith输入框中输入的值
FOR ${j} IN @{ParametersType}
run keyword if "${j}"=="RequestURI" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[1]/div/div/div[1]/input
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[2]/div/div/input ${RequestURIFind}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[3]/div/div/input ${RequestURIReplacewith}
... AND sleep ${sleep}
run keyword if "${j}"=="RequestBody" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[1]/div/div/div[1]/input
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[2]/div/div/input ${RequestBodyFind}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[3]/div/div/input ${RequestBodyReplacewith}
... AND sleep ${sleep}
run keyword if "${j}"=="ResponseBody" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[1]/div/div/div[1]/input
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[2]/div/div/input ${ResponseBodyFind}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[3]/div/div/input ${ResponseBodyReplacewith}
... AND sleep ${sleep}
run keyword if "${j}"=="RequestHeader" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[1]/div/div/div[1]/input
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[2]/div/div/input ${RequestHeaderFind}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[3]/div/div/input ${RequestHeaderReplacewith}
... AND sleep ${sleep}
run keyword if "${j}"=="ResponseHeader" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[1]/div/div/div[1]/input
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[2]/div/div/input ${ResponseHeaderFind}
... AND sleep ${sleep}
... AND input text xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[3]/ul/li[${i}]/div[3]/div/div/input ${ResponseHeaderReplacewith}
... AND sleep ${sleep}
END
HijackFile-SearchorCreate
[Arguments] ${HijackFileadd}
[Documentation] 调用次关键字前需要添加必填参数:${HijackFileadd}是个字典,字典中的数据为下
... ${SearchorCreate}:填入Search或Create
... ${Hijackname}:填入新建hijack的name
... ${Hijackfile}:填入新建hijack文件的路径
... ${DowName}:根据情况填入close或open或其他
... ${Input}填入shuru或其他
... ${Hijacktype}:填入选择文件类型的元素
... 判断是新建还是搜索HijackFile
${return} ${SearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${HijackFileadd} SearchorCreate
${SearchorCreate} Run Keyword If "${return}"=="FAIL" or "${SearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${SearchorCreate}
${return} ${Hijackname} Run Keyword And Ignore Error Get From Dictionary ${HijackFileadd} Hijackname
${Hijackname} Run Keyword If "${return}"=="FAIL" or "${Hijackname}"=="${EMPTY}" set variable null
... ELSE set variable ${Hijackname}
${return} ${Hijackfile} Run Keyword And Ignore Error Get From Dictionary ${HijackFileadd} Hijackfile
${Hijackfile} Run Keyword If "${return}"=="FAIL" or "${Hijackfile}"=="${EMPTY}" set variable null
... ELSE set variable ${Hijackfile}
${return} ${DowName} Run Keyword And Ignore Error Get From Dictionary ${HijackFileadd} DowName
${DowName} Run Keyword If "${return}"=="FAIL" or "${DowName}"=="${EMPTY}" set variable null
... ELSE set variable ${DowName}
${return} ${Input} Run Keyword And Ignore Error Get From Dictionary ${HijackFileadd} Input
${Input} Run Keyword If "${return}"=="FAIL" or "${Input}"=="${EMPTY}" set variable null
... ELSE set variable ${Input}
${return} ${Hijacktype} Run Keyword And Ignore Error Get From Dictionary ${HijackFileadd} Hijacktype
${Hijacktype} Run Keyword If "${return}"=="FAIL" or "${Hijacktype}"=="${EMPTY}" set variable null
... ELSE set variable ${Hijacktype}
sleep ${sleep}
click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[4]/div/div/div/div
sleep ${sleep}
run keyword if "${SearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ${Hijackname}
... AND sleep ${sleep}
... AND press keys xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ENTER
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[2]/div/li[1]
... AND sleep ${sleep}
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[1]/div/div/button
... AND sleep ${sleep}
... AND HijackFile-Create ${Hijackname} ${Hijackfile} ${DowName} ${Input} ${Hijackname} ${Hijacktype}
... ELSE log 传入参数错误
HijackFile-Create
[Arguments] ${Hijackfile} ${DowName} ${Input} ${Hijackname} ${Hijacktype}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Hijackname}:填入新建hijack的name
... ${Hijackfile}:填入新建hijack文件的路径
... ${DowName}:根据情况填入close或open或其他
... ${Input}填入shuru或其他
... ${Hijacktype}:填入选择文件类型的元素
... 新建hijack
sleep ${sleep}
input id=hijack_profileName ${Hijackname} #输入name
sleep ${sleep}
Choose File xpath=//*[@id="proxy"]/div[11]/div/div[1]/div[2]/form/div[2]/div/div/div[1]/input ${Hijackfile} #上传文件
sleep ${sleep}
run keyword if "${DowName}"=="close" and "${Input}"=="shuru" run keywords sleep ${sleep}
... AND input text id=hijack_contentName ${Hijackname}
... ELSE IF "${DowName}"=="open" click element xpath=//*[@id="contentNameChoose"]/div[1]/span[2]
sleep ${sleep}
click element id=hijackAddContentType #点击+ 打开侧滑窗口
sleep ${sleep}
click element ${Hijacktype} #选择文件类型
sleep ${sleep}
click element id=hijackAddOk1 #点击OK
InsertScript-SearchorCreate
[Arguments] ${InsertScript}
[Documentation] 调用次关键字前需要添加必填参数:${InsertScript}是个字典,字典中的数据为下
... ${SearchorCreate}:填入Search或Create
... ${Insertname}:填入新建insert的name
... ${Insertfile}:填入新建insert文件的路径
... ${Inserttype}:根据情况填入css或js
... ${Insertjstype}填入Before Page Load或After Page Load
... 判断是新建还是搜索insert
${return} ${SearchorCreate} Run Keyword And Ignore Error Get From Dictionary ${InsertScript} SearchorCreate
${SearchorCreate} Run Keyword If "${return}"=="FAIL" or "${SearchorCreate}"=="${EMPTY}" set variable null
... ELSE set variable ${SearchorCreate}
${return} ${Insertname} Run Keyword And Ignore Error Get From Dictionary ${InsertScript} Insertname
${Insertname} Run Keyword If "${return}"=="FAIL" or "${Insertname}"=="${EMPTY}" set variable null
... ELSE set variable ${Insertname}
${return} ${Insertfile} Run Keyword And Ignore Error Get From Dictionary ${InsertScript} Insertfile
${Insertfile} Run Keyword If "${return}"=="FAIL" or "${Insertfile}"=="${EMPTY}" set variable null
... ELSE set variable ${Insertfile}
${return} ${Inserttype} Run Keyword And Ignore Error Get From Dictionary ${InsertScript} Inserttype
${Inserttype} Run Keyword If "${return}"=="FAIL" or "${Inserttype}"=="${EMPTY}" set variable null
... ELSE set variable ${Inserttype}
${return} ${Insertjstype} Run Keyword And Ignore Error Get From Dictionary ${InsertScript} Insertjstype
${Insertjstype} Run Keyword If "${return}"=="FAIL" or "${Insertjstype}"=="${EMPTY}" set variable null
... ELSE set variable ${Insertjstype}
sleep ${sleep}
click element id=manipulation_select_insetScript
sleep ${sleep}
run keyword if "${SearchorCreate}"=="Search" run keywords sleep ${sleep}
... AND input text xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ${Insertname}
... AND sleep ${sleep}
... AND press keys xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ENTER
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[2]/div/li[1]
... AND sleep ${sleep}
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[1]/div/div/button
... AND sleep ${sleep}
... AND InsertScript-Create ${Insertname} ${Insertfile} ${Inserttype} ${Insertjstype}
... ELSE log 传入参数错误
InsertScript-Create
[Arguments] ${Insertname} ${Insertfile} ${Inserttype} ${Insertjstype}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Insertname}:填入新建insert的name
... ${Insertfile}:填入新建insert文件的路径
... ${Inserttype}:根据情况填入css或js
... ${Insertjstype}填入Before Page Load或After Page Load
... 新建insert
sleep ${sleep}
input id=insert_profileName ${Insertname} #输入name
sleep ${sleep}
Choose File xpath=//*[@id="insertAddUpload"]/div[1]/input ${Insertfile} #上传文件
sleep ${sleep}
clcik element id=insert_select_format
sleep ${sleep}
run keyword if "${Inserttype}"=="css" run keywords sleep ${sleep}
... AND click element //span[.="${Inserttype}"] #选择css
run keyword if "${Inserttype}"=="js" run keywords sleep ${sleep}
... AND click element //span[.="${Inserttype}"]
... AND sleep ${sleep}
... AND click element id=insert_select_insertOn #点击下拉框
... AND sleep ${sleep}
... AND click element //span[.="${Insertjstype}"]
sleep ${sleep}
click element id=insertAddOk1 #点击OK
ProxyLogSession
[Arguments] ${LogSession}
[Documentation] 调用次关键字前需要添加必填参数:
... ${LogSession}:填入clcos或其他
run keyword if "${LogSession}"=="close" run keywords sleep ${sleep}
... AND click element id=manipulationSwitch0
... ELSE log 开启日志
ProxyLogOptions
[Arguments] ${LogOptions}
[Documentation] 调用次关键字前需要添加必填参数:
... ${LogOptions}:填入All或其他
run keyword if "${LogOptions}"=="All" run keywords sleep ${sleep}
... AND click element id=logtype1
... ELSE log 选择Metadata only
ProxyEnabled
[Arguments] ${Enabled}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Enabled}:填入open或其他
run keyword if "${Enabled}"=="open" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="proxyManipulationUse"]/label[contains(text(), "Enabled")]/following-sibling::div/div
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div/div[3]/button[2]
... ELSE log 策略生效
Proxy-Policies-OK
sleep ${sleep}
click element id=proxyManipulationSuccess
sleep ${sleep}
PoliciesDelete
sleep ${sleep}
click element id=appDel
sleep ${sleep}
click element xpath=/html/body/div/div/div[3]/button[2]
sleep ${sleep}