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

2102 lines
150 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*** 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}
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
Wait Until Element Is Enabled id=app_create 20
Security-Source Name ${PolicyName}
Run Keyword If "${PolicyType}"=="Security Policy" SecurityAssert ${PolicyName}
... ELSE ProxyAssert ${PolicyName}
UIUpdataPolicies
[Arguments] ${PolicyInfo} ${SourceInfo}=null ${DestinationInfo}=null ${EditFilterInfo}=null ${CreateOrDeleteFilterInfo}=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 ${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 搜索要编辑的策略
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}" or "${SourceInfo}"=="null" log there is no SourceInfoDict
... ELSE UIPolicy. Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" or "${SourceInfo}"=="null" log there is no SourceInfoDict
... ELSE UIPolicy.CreateEditDeleteSources ${SourceInfo}
Comment 编辑Destination
Run Keyword If "${DestinationInfo}"=="${EMPTY}" or "${DestinationInfo}"=="null" log there is no DestinationInfo
... ELSE UIPolicy.Create-Destination-Button
Run Keyword If "${DestinationInfo}"=="${EMPTY}" or "${DestinationInfo}"=="null" log there is no DestinationInfo
... ELSE UIPolicy.CreateEditDeleteDestination ${DestinationInfo}
Comment 编辑Application
Run Keyword If "${ApplicationSearchV}"=="${emptyList}" or "${ApplicationSearchV}"=="null" log there is no ApplicationSearchV
... ELSE UIPolicy.Create-Application-Button ${PolicyType} ${ApplicationSearchV} ${PolicyAction}
#编辑filter
Run Keyword If "${EditFilterInfo}"=="${EMPTY}" or "${EditFilterInfo}"=="null" log there is no FilterInfo
... ELSE Create-Filter-SecurityOrProxy ${PolicyType} ${ApplicationFilter} ${EditFilterInfo}
Run Keyword If "${CreateOrDeleteFilterInfo}"=="${EMPTY}" or "${CreateOrDeleteFilterInfo}"=="null" log there is no FilterInfo
... ELSE Edit-Filter-SecurityOrProxy ${PolicyType} ${CreateOrDeleteFilterInfo}
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
Wait Until Element Is Enabled id=app_create 20
Security-Source Name ${PolicyEditName}
Run Keyword If "${PolicyType}"=="Security Policy" SecurityAssert ${PolicyEditName}
... ELSE ProxyAssert ${PolicyEditName}
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 xpath=//*[@id="policy_paper_left"]/div[2]/label[contains(text(), "Name")]/following-sibling::div/div/input ${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}
FOR ${i} IN @{ApplicationSearchV}
click element id=interceptionadd_application
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}
${status} Run Keyword And Return Status Page Should Contain element xpath=/html/body/div/div/div[3]/button[2]/span #xpath=/html/body/div/div/div[3]/button[2]
log ${status}
${return} Run Keyword And Ignore Error JudgmentPopup ${status}
# ... ELSE log 未检测弹出框不操作
# ${style}= Get Element Attribute class=el-message-box__wrapper style
# log ${style}1111111111111
# ${c} Evaluate "display: none" in """${style}"""
# run keyword if "${c}"=="False" click element xpath=/html/body/div/div/div[3]/button[2]
# run keyword if "${c}"=="True" log go on
# sleep ${sleep}
click element id=check_list_allcancelobject
sleep ${sleep}
JudgmentPopup
[Arguments] ${status}
Comment 判断弹出框
run keyword if "${status}" == "True" run keywords click element xpath=/html/body/div/div/div[3]/button[2]
... AND 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 id=interceptionadd_add_filter 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}
run keyword if "${Action}"=="Deny" and "${subaction}"=="Drop" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method0
run keyword if "${Action}"=="Deny" and "${subaction}"=="RST" run keywords sleep ${sleep}
... AND click element id=denyUserRegionBlock_method1
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}
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}
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数据内容
# 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
... 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}
Wait Until Element Is Enabled id=objectAdd_name ${sleep_Wait}
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}
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}
Edit-Filter-SecurityOrProxy
[Arguments] ${PolicyType} ${EditFilterdict}
${typepath} Run Keyword If "${PolicyType}"=="Security Policy" set variable /html/body/div[1]/div/div[3]/div[2]/div/div[1]/form[1]/div/div[8]/div[1]/div[1]/label
... ELSE set variable /html/body/div[1]/div/div[3]/div[2]/div/div[1]/form[1]/div/div[9]/div[1]/div[1]/label
FOR ${Var} ${Filter} IN ENUMERATE @{EditFilterdict}
click element xpath=${typepath}\[contains(text(), "${Filter}")]/following-sibling::div/div/i
sleep ${sleep}
input text xpath=//*[@id="condistions_protocol"]/div[2]/p[contains(text(), "${filter}")]/following-sibling::div[2]/div/div[1]/input ${EditFilterdict}[${Filter}]
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}
${class}= Get Element Attribute xpath=${typepath}\[contains(text(), "${Filter}")]/following-sibling::div/div class
run keyword if "${class}"=="addobject addobject-long-list float-left" log 不操作
run keyword if "${class}"=="addobject addobject-long-list float-left obj-content-null" run keywords sleep ${sleep}
... AND click element xpath=${typepath}\[contains(text(), "${Filter}")]/following-sibling::div/div[2]/i
END
PoliciesDelete
sleep ${sleep}
click element id=appDel
sleep ${sleep}
click element xpath=/html/body/div/div/div[3]/button[2]
sleep ${sleep}