948 lines
58 KiB
Plaintext
948 lines
58 KiB
Plaintext
*** Settings ***
|
||
Library Selenium2Library
|
||
Resource ../objects/NewObject.robot
|
||
|
||
*** Keywords ***
|
||
CreateButton
|
||
[Documentation] 点击安全策略中的Create按钮
|
||
Wait Until Element Is Enabled id=app_create
|
||
sleep 3
|
||
click element id=app_create
|
||
|
||
Create-name
|
||
[Arguments] ${name}
|
||
[Documentation] 输入name
|
||
sleep 2
|
||
input text id=manipulation_elInput_policyName ${name}
|
||
|
||
Create-action
|
||
[Arguments] ${action}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${action}:填入allow或deny或monitor或intercept
|
||
... 判断要创建什么动作的策略
|
||
sleep 1
|
||
run keyword if "${action}"=="allow" run keywords sleep 1
|
||
... AND click element id=proxyManipulationallow
|
||
... ELSE IF "${action}"=="deny" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... ELSE IF "${action}"=="monitor" run keywords sleep 1
|
||
... AND click element id=proxyManipulationmonitor
|
||
... ELSE IF "${action}"=="redirect" run keywords sleep 1
|
||
... AND click element id=proxyManipulationredirect
|
||
... ELSE IF "${action}"=="replace" run keywords sleep 1
|
||
... AND click element id=proxyManipulationreplace
|
||
... ELSE IF "${action}"=="hijack" run keywords sleep 1
|
||
... AND click element id=proxyManipulationhijack
|
||
... ELSE IF "${action}"=="insert" run keywords sleep 1
|
||
... AND click element id=proxyManipulationinsert
|
||
|
||
Create-Source-Button
|
||
[Documentation] 点击Source的加号
|
||
sleep 2
|
||
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 2
|
||
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[1]/div/div
|
||
|
||
|
||
ApplicationSearch
|
||
[Arguments] ${Application} ${HttpOrDoh}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Application}:填入是Application的内容,例如SSL或HTTP
|
||
... 选择search对象
|
||
run keyword if "${Application}"=="redirect" run keywords sleep 1
|
||
... AND click element id=interceptionadd_application
|
||
... AND sleep 1
|
||
... AND HttpOrDoh ${HttpOrDoh}
|
||
... ELSE log 不操作
|
||
HttpOrDoh
|
||
[Arguments] ${HttpOrDoh}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${HttpOrDoh}:填入是Application的内容,例如SSL或HTTP
|
||
... 选择search对象
|
||
run keyword if "${HttpOrDoh}"=="HTTP" run keywords sleep 1
|
||
... AND click element id=interceptionadd_checkappshow1
|
||
... AND sleep 1
|
||
... 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 1
|
||
... AND click element id=interceptionadd_checkappshow0
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[7]/div[3]/div/button
|
||
Create-Filter-judge
|
||
[Arguments] ${Application}=null ${Filter}=null ${Hostname}=null ${URLname}=null ${Request Headername}=null ${Response Headername}=null ${Request Contentname}=null
|
||
... ${Response Contentname}=null ${SSLSNIname}=null ${CNname}=null ${SANname}=null ${QNAMEname}=null ${Subjectname}=null ${MAILContentname}=null ${Attachment Namename}=null
|
||
... ${Attachment Contentname}=null ${Fromname}=null ${Toname}=null ${MAILAccountname}=null ${URIname}=null ${FTPContentname}=null ${FTPAccountname}=null ${QUICSNIname}=null
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Application}:填入是Application的内容,例如SSL或HTTP
|
||
... ${Filter}:是一个列表,列表中填入filter类型,例如Host或URL等
|
||
... name:各个对象名称的列表
|
||
... 判断filter是否可以点击
|
||
${class}= Get Element Attribute xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[8]/div[1]/div/div[1] class
|
||
run keyword if "${class}"=="addobject addobject-long-list obj-content-null filter-width-style cursor addobject-long-list-disabled" log filter不可点击,不可添加filter
|
||
run keyword if "${class}"=="addobject addobject-long-list obj-content-null filter-width-style cursor" run keywords sleep 1
|
||
... AND Create-Filter ${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-Filter
|
||
[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 2
|
||
FOR ${i} IN @{Filter}
|
||
sleep 1
|
||
click element id=interceptionadd_add_filter
|
||
sleep 1
|
||
run keyword if "${Application}"=="HTTP" and "${i}"=="Host" run keywords sleep 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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}"=="Doh" and "${i}"=="Host" run keywords sleep 1
|
||
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[1]
|
||
... AND Create-Object-Search ${DohHostname} ${i}
|
||
run keyword if "${Application}"=="Doh" and "${i}"=="QNAME" run keywords sleep 1
|
||
... AND click element xpath=//*[@id="condistions_protocol"]/div/div[1]/div/div/div/ul/li[2]
|
||
... AND Create-Object-Search ${QNAMEname} ${i}
|
||
END
|
||
Deny-subaction
|
||
[Arguments] ${action}=null ${subaction}=null ${code}=null ${Content}=null ${block-text}=null ${SearchorCreate}=null
|
||
... ${ProfileName}=null ${file}=null ${QType}=null ${Avalue}=null ${Attl}=null ${CNAMEvalue}=null ${CNAMEttl}=null
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${code}:填入403或404
|
||
... ${Content}:填入TEXT或Profile
|
||
... ${SearchorCreate}:填入Search或Create
|
||
... ${block-text}:填入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
|
||
run keyword if "${action}"=="deny" and "${denycode}"=="403" run keywords sleep 1
|
||
... AND click element id=manipulation_select_addAction
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div[10]/div[1]/div[1]/ul/li[1]
|
||
... AND sleep 1
|
||
run keyword if "${action}"=="deny" and "${subaction}"=="404" run keywords sleep 1
|
||
... AND click element id=manipulation_select_addAction
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div[10]/div[1]/div[1]/ul/li[2]
|
||
... AND sleep 1
|
||
run keyword if "${action}"=="deny" and "${subaction}"=="451" run keywords sleep 1
|
||
... AND click element id=manipulation_select_addAction
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div[10]/div[1]/div[1]/ul/li[2]
|
||
... AND sleep 1
|
||
... AND
|
||
Deny-content
|
||
[Arguments] ${contenttype} ${SearchorCreate} ${ProfileName} ${file}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${code}:填入403或404
|
||
... ${Content}:填入TEXT或Profile
|
||
... ${SearchorCreate}:填入Search或Create
|
||
... ${block-text}:填入TEXT文本框内容
|
||
... ${ProfileName}:Profile的名字
|
||
... ${file}:上传文件路径
|
||
... 添加block数据内容
|
||
sleep 1
|
||
click element id=denyUserRegionBlock_code
|
||
run keyword if "${contenttype}"=="File" run keywords sleep 1
|
||
... AND click element id=manipulation_select_blockInfo
|
||
... AND sleep 1
|
||
... AND click element id=ResponseContentFile
|
||
... AND sleep 1
|
||
... AND click element id=manipulation_select_htmlProfile
|
||
... AND sleep 1
|
||
... AND Profile-SearchorCreate ${SearchorCreate} ${ProfileName} ${file}
|
||
Profile-SearchorCreate
|
||
[Arguments] ${SearchorCreate} ${ProfileName} ${file}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${SearchorCreate}:填入Search或Create
|
||
... ${ProfileName}:Profile的名字
|
||
... ${file}:上传文件路径
|
||
... 判断是新建还是搜索profile
|
||
sleep 1
|
||
click element id=html_profile
|
||
sleep 1
|
||
run keyword if "${SearchorCreate}"=="Search" run keywords sleep 1
|
||
... AND input text xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ${ProfileName}
|
||
... AND sleep 1
|
||
... AND press keys xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ENTER
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[2]/div/li[1]
|
||
... AND sleep 1
|
||
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[1]/div/div/button
|
||
... AND sleep 1
|
||
... AND input text id=responsepages_profileName ${ProfileName}
|
||
... AND sleep 1
|
||
... AND Choose File xpath=//*[@id="policy_Manipulation_create6"]/div[2]/form/div[2]/div/div/div/input ${file} #上传文件
|
||
... AND sleep 1
|
||
... AND clcik element id=responseAddOk1
|
||
... AND sleep 1
|
||
... ELSE log 传入参数错误
|
||
Deny-Redirect
|
||
[Arguments] ${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
|
||
sleep 1
|
||
click element id=interceptionadd_add_filter
|
||
sleep 1
|
||
run keyword if "${QType}"=="A" run keywords sleep 1
|
||
... AND input text id=A00 ${Avalue}
|
||
... AND sleep 1
|
||
... AND input text id=ttl00 ${Attl}
|
||
... AND sleep 1
|
||
... AND click element id=interceptionadd_addForm
|
||
... AND sleep 1
|
||
... AND input text id=Cname01 ${CNAMEvalue}
|
||
... AND sleep 1
|
||
... AND input text id=ttl01 ${CNAMEttl}
|
||
run keyword if "${QType}"=="AAAA" run keywords sleep 1
|
||
... AND click element id=dns_qtype_radio01
|
||
... AND input text id=AAAA00 ${Avalue}
|
||
... AND sleep 1
|
||
... AND input text id=ttl00 ${Attl}
|
||
... AND sleep 1
|
||
... AND click element id=interceptionadd_addForm
|
||
... AND sleep 1
|
||
... AND input text id=Cname01 ${CNAMEvalue}
|
||
... AND sleep 1
|
||
... AND input text id=ttl01 ${CNAMEttl}
|
||
sleep 1
|
||
click element id=interceptionadd_shezhidns
|
||
|
||
Replace-Action-Parameters-for1
|
||
[Arguments] ${ParametersType} ${RequestURIFind}=null ${RequestURIReplacewith}=null ${RequestBodyFind}=null ${RequestBodyReplacewith}=null ${ResponseBodyFind}=null
|
||
... ${ResponseBodyReplacewith}=null ${RequestHeaderFind}=null ${RequestHeaderReplacewith}=null ${ResponseHeaderFind}=null ${ResponseHeaderReplacewith}=null
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${ParametersType}:列表格式,Search 下拉框中内容
|
||
... ${i}:索引值
|
||
... ${xxxFind}:是Find输入框输入的值
|
||
... ${XXXReplacewith} :是 Replacewith输入框中输入的值
|
||
${len} Get Length ${ParametersType}
|
||
${len1} evaluate ${len}+1
|
||
FOR ${i} IN RANGE 1 ${len1}
|
||
Replace-Action-Parameters-for1 ${ParametersType} ${i} ${RequestURIFind} ${RequestURIReplacewith} ${RequestBodyFind} ${RequestBodyReplacewith} ${ResponseBodyFind}
|
||
... ${ResponseBodyReplacewith} ${RequestHeaderFind} ${RequestHeaderReplacewith} ${ResponseHeaderFind} ${ResponseHeaderReplacewith}
|
||
sleep 1
|
||
run keyword if "${len}"!="1" run keywords sleep 1
|
||
... AND clcik element id=replaceadd_btn
|
||
... AND sleep 1
|
||
END
|
||
sleep 1
|
||
|
||
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 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
run keyword if "${j}"=="RequestBody" run keywords sleep 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
run keyword if "${j}"=="ResponseBody" run keywords sleep 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
run keyword if "${j}"=="RequestHeader" run keywords sleep 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
run keyword if "${j}"=="ResponseHeader" run keywords sleep 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
END
|
||
|
||
HijackFile-SearchorCreate
|
||
[Arguments] ${SearchorCreate} ${Hijackname} ${Hijackfile} ${dow_name} ${input} ${Hijackname} ${Hijacktype}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${SearchorCreate}:填入Search或Create
|
||
... ${Hijackname}:填入新建hijack的name
|
||
... ${Hijackfile}:填入新建hijack文件的路径
|
||
... ${dow_name}:根据情况填入close或open或其他
|
||
... ${input};填入shuru或其他
|
||
... ${Hijacktype}:填入选择文件类型的元素
|
||
... 判断是新建还是搜索HijackFile
|
||
sleep 1
|
||
click element xpath=//*[@id="policy_paper_left"]/div[12]/div/div/form/div[4]/div/div/div/div
|
||
sleep 1
|
||
run keyword if "${SearchorCreate}"=="Search" run keywords sleep 1
|
||
... AND input text xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ${Hijackname}
|
||
... AND sleep 1
|
||
... AND press keys xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ENTER
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[2]/div/li[1]
|
||
... AND sleep 1
|
||
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[1]/div/div/button
|
||
... AND sleep 1
|
||
... AND HijackFile-Create ${Hijackname} ${Hijackfile} ${dow_name} ${input} ${Hijackname} ${Hijacktype}
|
||
... ELSE log 传入参数错误
|
||
|
||
HijackFile-Create
|
||
[Arguments] ${Hijackname} ${Hijackfile} ${dow_name} ${input} ${Hijackname} ${Hijacktype}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Hijackname}:填入新建hijack的name
|
||
... ${Hijackfile}:填入新建hijack文件的路径
|
||
... ${dow_name}:根据情况填入close或open或其他
|
||
... ${input};填入shuru或其他
|
||
... ${Hijacktype}:填入选择文件类型的元素
|
||
... 新建hijack
|
||
Sleep 2
|
||
input id=hijack_profileName ${Hijackname} #输入name
|
||
Sleep 2
|
||
Choose File xpath=//*[@id="proxy"]/div[11]/div/div[1]/div[2]/form/div[2]/div/div/div[1]/input ${Hijackfile} #上传文件
|
||
Sleep 2
|
||
run keyword if "${dow_name}"=="close" and "${input}"=="shuru" run keywords sleep 1
|
||
... AND input text id=hijack_contentName ${Hijackname}
|
||
... ELSE IF "${dow_name}"=="open" click element xpath=//*[@id="contentNameChoose"]/div[1]/span[2]
|
||
sleep 1
|
||
click element id=hijackAddContentType #点击+ 打开侧滑窗口
|
||
Sleep 1
|
||
click element ${Hijacktype} #选择文件类型
|
||
sleep 2
|
||
click element id=hijackAddOk1 #点击OK
|
||
|
||
InsertScript-SearchorCreate
|
||
[Arguments] ${SearchorCreate} ${Insertname} ${Insertfile} ${Inserttype} ${Insertjstype}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${SearchorCreate}:填入Search或Create
|
||
... ${Insertname}:填入新建insert的name
|
||
... ${Insertfile}:填入新建insert文件的路径
|
||
... ${Inserttype}:根据情况填入css或js
|
||
... ${Insertjstype};填入Before Page Load或After Page Load
|
||
... 判断是新建还是搜索insert
|
||
sleep 1
|
||
click element id=manipulation_select_insetScript
|
||
sleep 1
|
||
run keyword if "${SearchorCreate}"=="Search" run keywords sleep 1
|
||
... AND input text xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ${Hijackname}
|
||
... AND sleep 1
|
||
... AND press keys xapth=/html/body/div/div[1]/div[1]/ul/div[1]/div/input ENTER
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[2]/div/li[1]
|
||
... AND sleep 1
|
||
... ELSE IF "${SearchorCreate}"=="Create" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/div[1]/div/div/button
|
||
... AND sleep 1
|
||
... 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 2
|
||
input id=insert_profileName ${Insertname} #输入name
|
||
Sleep 2
|
||
Choose File xpath=//*[@id="insertAddUpload"]/div[1]/input ${Insertfile} #上传文件
|
||
Sleep 2
|
||
clcik element id=insert_select_format
|
||
sleep 1
|
||
run keyword if "${Inserttype}"=="css" run keywords sleep 1
|
||
... AND click element //span[.="${Inserttype}"] #选择css
|
||
run keyword if "${Inserttype}"=="js" run keywords sleep 1
|
||
... AND click element //span[.="${Inserttype}"]
|
||
... AND sleep 1
|
||
... AND click element id=insert_select_insertOn #点击下拉框
|
||
... AND sleep 1
|
||
... AND click element //span[.="${Insertjstype}"]
|
||
sleep 2
|
||
click element id=insertAddOk1 #点击OK
|
||
|
||
|
||
|
||
|
||
LogSession
|
||
[Arguments] ${LogSession}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${LogSession}:填入clcos或其他
|
||
run keyword if "${LogSession}"=="close" run keywords sleep 1
|
||
... AND click element id=manipulationSwitch0
|
||
... ELSE log 开启日志
|
||
|
||
LogOptions
|
||
[Arguments] ${LogOptions}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${LogOptions}:填入All或其他
|
||
run keyword if "${LogOptions}"=="All" run keywords sleep 1
|
||
... AND click element id=logType1
|
||
... ELSE log 选择Metadata only
|
||
Enabled
|
||
[Arguments] ${Enabled}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Enabled}:填入open或其他
|
||
run keyword if "${Enabled}"=="open" run keywords sleep 1
|
||
... AND click element xpath=//*[@id="proxyManipulationUse"]/label[contains(text(), "Enabled")]/following-sibling::div/div
|
||
... AND sleep 2
|
||
... AND click element xpath=/html/body/div/div/div[3]/button[2]
|
||
... ELSE log 开启日志
|
||
|
||
Security-Policies-OK
|
||
sleep 1
|
||
click element id=proxyManipulationSuccess
|
||
sleep 1
|
||
Create-Object-Search
|
||
[Arguments] ${name} ${filter}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:填入是一个列表,列表内容为object的name
|
||
... 选择search对象
|
||
sleep 1
|
||
click element xpath=//*[@id="policy_paper_left"]/div[8]/div/div[1]/label[contains(text(), "${filter}")]/following-sibling::div/div
|
||
sleep 1
|
||
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 1
|
||
press keys xpath=//*[@id="condistions_protocol"]/div[2]/p[contains(text(), "${filter}")]/following-sibling::div[2]/div/div[1]/input ENTER
|
||
sleep 1
|
||
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 1
|
||
END
|
||
|
||
Create-Source
|
||
[Arguments] ${type1}=null ${CreateOrSearch}=null ${Add}=null ${name}=null
|
||
... ${object_name}=null ${ipclienttext1}=null ${post}=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段
|
||
... ${post}:填入端口
|
||
... ${Country}:列表形式,列表中是国家名字
|
||
... ${City}:列表形式,列表中是城市名字
|
||
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... ${times}:填入小时数,例如1或2
|
||
... ${numbers}:填入数值,例如1或10000
|
||
... ${limits}:填入数值,例如1或10000
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... ${keywordtext}:填入新建subid的内容
|
||
... 判断新建source选择用什么样的类型数据
|
||
run keyword if "${type1}"=="Ip" run keywords sleep 2
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[1]
|
||
... AND sleep 1
|
||
... AND sleep 1
|
||
... AND SourceIPCreateOrSearch ${CreateOrSearch} ${Add} ${type1} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${type1}"=="SUBID" run keywords sleep 2
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[2]
|
||
... AND sleep 1
|
||
... AND SUBIDCreateOrSearch ${name} ${keywordtext} ${object_name}
|
||
... ELSE IF "${type1}"=="Geography" run keywords sleep 2
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[3]
|
||
... AND sleep 1
|
||
... AND SourceIPCreateOrSearch ${CreateOrSearch} ${Add} ${type1} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${type1}"=="IPLearning" run keywords sleep 2
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[4]
|
||
... AND sleep 1
|
||
... AND SourceIPCreateOrSearch ${CreateOrSearch} ${Add} ${type1} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
|
||
Create-Destination
|
||
[Arguments] ${type1}=null ${CreateOrSearch}=null ${Add}=null ${name}=null
|
||
... ${object_name}=null ${ipclienttext1}=null ${post}=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段
|
||
... ${post}:填入端口
|
||
... ${Country}:列表形式,列表中是国家名字
|
||
... ${City}:列表形式,列表中是城市名字
|
||
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... ${times}:填入小时数,例如1或2
|
||
... ${numbers}:填入数值,例如1或10000
|
||
... ${limits}:填入数值,例如1或10000
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... ${keywordtext}:填入新建subid的内容
|
||
... 判断新建source选择用什么样的类型数据
|
||
run keyword if "${type1}"=="Ip" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[1]
|
||
... AND sleep 1
|
||
... AND sleep 1
|
||
... AND DestinationIPCreateOrSearch ${CreateOrSearch} ${Add} ${type1} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${type1}"=="Geography" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[3]
|
||
... AND sleep 1
|
||
... AND DestinationIPCreateOrSearch ${CreateOrSearch} ${Add} ${type1} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${type1}"=="IPLearning" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[1]/div[2]/div[1]/div/div/div/div[1]/div/div/div/div[4]
|
||
... AND sleep 1
|
||
... AND DestinationCreateOrSearch ${CreateOrSearch} ${Add} ${type1} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
|
||
|
||
SourceIPCreateOrSearch
|
||
[Arguments] ${CreateOrSearch} ${Add} ${ip_type} ${name} ${object_name} ${ipclienttext1}
|
||
... ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${CreateOrSearch}:填入Create或者Search
|
||
... ${Add}:填入Address或Group
|
||
... ${name}:名称
|
||
... ${ip_type}:填入Ip或者Geography或者IPLearning
|
||
... ${ipclienttext1}:填入IPV4或6的值或range的ip段
|
||
... ${post}:填入端口
|
||
... ${Country}:列表形式,列表中是国家名字
|
||
... ${City}:列表形式,列表中是城市名字
|
||
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... ${times}:填入小时数,例如1或2
|
||
... ${numbers}:填入数值,例如1或10000
|
||
... ${limits}:填入数值,例如1或10000
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... 判断是新建ip还是搜索添加ip
|
||
run keyword if "${CreateOrSearch}"=="Create" run keywords sleep 1
|
||
... AND click element id=interceptionadd_proaddaddSource
|
||
... AND SourceIPAdd ${Add} ${ip_type} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${CreateOrSearch}"=="Search" run keywords sleep 1
|
||
... AND SourceSearchSearch ${object_name}
|
||
SUBIDCreateOrSearch
|
||
[Arguments] ${name} ${keywordtext} ${object_name}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${CreateOrSearch}:填入Create或者Search
|
||
... ${name}:名称
|
||
... ${keywordtext}:填入新建subid的内容
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... 判断是新建subid还是搜索添加subid
|
||
run keyword if "${CreateOrSearch}"=="Create" run keywords sleep 1
|
||
... AND click element id=interceptionadd_proaddaddSource
|
||
... AND SUBIDAdd ${Add} ${name} ${keywordtext} ${object_name}
|
||
... ELSE IF "${CreateOrSearch}"=="Search" run keywords sleep 1
|
||
... AND SourceSearchSearch ${object_name}
|
||
DestinationIPCreateOrSearch
|
||
[Arguments] ${CreateOrSearch} ${Add} ${ip_type} ${name} ${object_name} ${ipclienttext1}
|
||
... ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${CreateOrSearch}:填入Create或者Search
|
||
... ${Add}:填入Address或Group
|
||
... ${name}:名称
|
||
... ${ip_type}:填入Ip或者Geography或者IPLearning
|
||
... ${ipclienttext1}:填入IPV4或6的值或range的ip段
|
||
... ${post}:填入端口
|
||
... ${Country}:列表形式,列表中是国家名字
|
||
... ${City}:列表形式,列表中是城市名字
|
||
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... ${times}:填入小时数,例如1或2
|
||
... ${numbers}:填入数值,例如1或10000
|
||
... ${limits}:填入数值,例如1或10000
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... 判断是新建ip还是搜索添加ip
|
||
run keyword if "${CreateOrSearch}"=="Create" run keywords sleep 1
|
||
... AND click element id=interceptionadd_proaddaddDestination
|
||
... AND DestinationIPAdd ${Add} ${ip_type} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${CreateOrSearch}"=="Search" run keywords sleep 1
|
||
... AND DestinationSearch ${object_name}
|
||
SourceSearch
|
||
[Arguments] ${name}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:填入是一个列表,列表内容为source的name
|
||
... 选择search对象
|
||
FOR ${i} IN @{name}
|
||
input text xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ${i}
|
||
sleep 1
|
||
press keys xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ENTER
|
||
sleep 1
|
||
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[4]/div[2]/div[1]/div[2]/div[2]/div/div[2]/div/div/ul/li[1]
|
||
sleep 1
|
||
END
|
||
DestinationSearch
|
||
[Arguments] ${name}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:填入是一个列表,列表内容为source的name
|
||
... 选择search对象
|
||
FOR ${i} IN @{name}
|
||
input text xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ${i}
|
||
sleep 1
|
||
press keys xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[1]/div[2]/div[2]/div/div[1]/input ENTER
|
||
sleep 1
|
||
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[1]/div[2]/div[2]/div/div[2]/div/div/ul/li[1]
|
||
sleep 1
|
||
END
|
||
|
||
SUBIDAdd
|
||
[Arguments] ${Add} ${name} ${keywordtext} ${object_name}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Add}:填入Address或Group
|
||
... ${name}:名称
|
||
... ${keywordtext}:填入新建subid的内容
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... 判断是新建subid还是新建subid分组
|
||
run keyword if "${Add}"=="Address" run keywords sleep 1
|
||
... AND click element xpath=/html/body/ul/li[1]
|
||
... AND sleep 1
|
||
... AND SUBAddress ${name} ${keywordtext}
|
||
... ELSE IF "${Add}"=="Group" run keywords sleep 1
|
||
... AND click element xpath=/html/body/ul/li[2]
|
||
... AND sleep 1
|
||
... AND SUBGroupAdd ${name} ${object_name}
|
||
SUBAddress
|
||
[Arguments] ${name} ${keywordtext}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:名称
|
||
... ${keywordtext}:填入新建subid的内容
|
||
... 新建subid
|
||
SourceCreate-name ${name}
|
||
click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[3]/div/div[1]/i
|
||
sleep 1
|
||
Create-SubscriberID-text ${keywordtext}
|
||
sleep 1
|
||
|
||
SUBGroupAdd
|
||
[Arguments] ${name} ${object_name}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:名称
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
... 新建subid分组
|
||
SourceCreate-name ${name}
|
||
click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]
|
||
sleep 1
|
||
Create-Sub-Objects ${object_name}
|
||
NewObject.Create-ok
|
||
SourceIPAdd
|
||
[Arguments] ${Add} ${ip_type} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Add}:填入Address或Group
|
||
... ${ip_type}:填入IP或者Geography或者IPLearning
|
||
... 判断是新建ip还是新建ip分组
|
||
run keyword if "${Add}"=="Address" run keywords sleep 1
|
||
... AND click element xpath=/html/body/ul/li[1]
|
||
... AND sleep 1
|
||
... AND SourceIPAddress ${name} ${ip_type} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${Add}"=="Group" run keywords sleep 1
|
||
... AND click element xpath=/html/body/ul/li[2]
|
||
... AND sleep 1
|
||
... AND SourceIPGroupAdd ${name} ${ip_type} ${object_name}
|
||
SourceIPAddress
|
||
[Arguments] ${name} ${ip_type} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:名称
|
||
... ${ip_type}:填入Ip或者Geography或者IPLearning
|
||
... ${ipclienttext1}:填入IPV4或6的值或range的ip段
|
||
... ${post}:填入端口
|
||
... ${Country}:列表形式,列表中是国家名字
|
||
... ${City}:列表形式,列表中是城市名字
|
||
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... ${times}:填入小时数,例如1或2
|
||
... ${numbers}:填入数值,例如1或10000
|
||
... ${limits}:填入数值,例如1或10000
|
||
... 判断 新建选择用什么样的类型,并进行新建
|
||
SourceCreate-name ${name}
|
||
sleep 1
|
||
run keyword if "${ip_type}"=="Ip" run keywords click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
|
||
... AND sleep 1
|
||
... AND NewObject.Create-ip-ClientIP-text ${ipclienttext1} ${post}
|
||
run keyword if "${ip_type}"=="Geography" run keywords click element id=objectAdd_ip1
|
||
... AND sleep 1
|
||
... AND click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[4]/div/div[1]/div[2]
|
||
... AND sleep 1
|
||
... AND NewObject.Create-Geography ${Country} ${City}
|
||
... AND sleep 1
|
||
... AND click element id=interceptionadd_allcancelobjec3t
|
||
... AND sleep 1
|
||
run keyword if "${ip_type}"=="IPLearning" run keywords click element id=objectAdd_ip2
|
||
... AND sleep 1
|
||
... AND click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
|
||
... AND sleep 1
|
||
... AND input text xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[4]/div/div[4]/div/div[1]/div[2]/div[1]/div[1]/form/div[1]/div/div[1]/input ${fqdn}
|
||
... AND sleep 1
|
||
... AND click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[5]/div[1]/div/div/div[2]
|
||
... AND sleep 1
|
||
... AND Learn-From-Protocols ${Protocols1}
|
||
... AND Learning-Depth ${Degree}
|
||
... AND sleep 1
|
||
... 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 1
|
||
... 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 1
|
||
... 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 1
|
||
sleep 1
|
||
SourceCreate-ok
|
||
|
||
DestinationIPAdd
|
||
[Arguments] ${Add} ${ip_type} ${name} ${object_name} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Add}:填入Address或Group
|
||
... ${ip_type}:填入IP或者Geography或者IPLearning
|
||
... 判断是新建ip还是新建ip分组
|
||
run keyword if "${Add}"=="Address" run keywords sleep 1
|
||
... AND click element xpath=/html/body/ul[contains(@id,'dropdown-menu' )and @x-placement='bottom-start']/child::li[1]
|
||
... AND sleep 1
|
||
... AND DestinationIPAddress ${name} ${ip_type} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
... ELSE IF "${Add}"=="Group" run keywords sleep 1
|
||
... AND click element xpath=/html/body/ul[contains(@id,'dropdown-menu' )and @x-placement='bottom-start']/child::li[2]
|
||
... AND sleep 1
|
||
... AND IPGroupAdd ${name} ${ip_type} ${object_name}
|
||
DestinationIPAddress
|
||
[Arguments] ${name} ${ip_type} ${ipclienttext1} ${post} ${Country} ${City} ${Protocols1} ${Degree} ${times} ${numbers} ${limits}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:名称
|
||
... ${ip_type}:填入Ip或者Geography或者IPLearning
|
||
... ${ipclienttext1}:填入IPV4或6的值或range的ip段
|
||
... ${post}:填入端口
|
||
... ${Country}:列表形式,列表中是国家名字
|
||
... ${City}:列表形式,列表中是城市名字
|
||
... ${Protocols1}:填入HTTP或SSL或HTTPSSL
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... ${times}:填入小时数,例如1或2
|
||
... ${numbers}:填入数值,例如1或10000
|
||
... ${limits}:填入数值,例如1或10000
|
||
... 判断 新建选择用什么样的类型,并进行新建
|
||
DestinationCreate-name ${name}
|
||
sleep 1
|
||
run keyword if "${ip_type}"=="Ip" run keywords click element xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
|
||
... AND sleep 1
|
||
... AND NewObject.Create-ip-ClientIP-text ${ipclienttext1} ${post}
|
||
run keyword if "${ip_type}"=="Geography" run keywords click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/label[2]
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]/div[2]
|
||
... AND sleep 1
|
||
... AND NewObject.Create-Geography ${Country} ${City}
|
||
... AND sleep 1
|
||
... AND click element id=interceptionadd_allcancelobjec3t
|
||
... AND sleep 1
|
||
run keyword if "${ip_type}"=="IPLearning" run keywords click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[3]/div/div/label[3]
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div[1]
|
||
... AND sleep 1
|
||
... AND input text xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/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 1
|
||
... AND click element xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[1]/div/div/div[2]
|
||
... AND sleep 1
|
||
... AND Learn-From-Protocols ${Protocols1}
|
||
... AND Learning-Depth ${Degree}
|
||
... AND sleep 1
|
||
... AND input text xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[3]/div/div[1]/input ${times}
|
||
... AND sleep 1
|
||
... AND input text xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[4]/div/div[1]/input ${numbers}
|
||
... AND sleep 1
|
||
... AND input text xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[5]/div/div[1]/input ${limits}
|
||
... AND sleep 1
|
||
DestinationCreate-ok
|
||
Learn-From-Protocols
|
||
[Arguments] ${Protocols1}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Protocols1}:填入HTTP或SSL或者HTTPSSL
|
||
... 判断选择用什么样的协议
|
||
run keyword if "${Protocols1}"=="HTTP" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div[6]/div[1]/div[1]/ul/li[1]
|
||
run keyword if "${Protocols1}"=="SSL" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div[6]/div[1]/div[1]/ul/li[2]
|
||
run keyword if "${Protocols1}"=="HTTPSSL" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div[6]/div[1]/div[1]/ul/li[1]
|
||
... AND sleep 1
|
||
... AND click element xpath=/html/body/div[6]/div[1]/div[1]/ul/li[2]
|
||
|
||
Learning-Depth
|
||
[Arguments] ${Degree}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${Degree}:填入1Degree或2Degree
|
||
... 判断是用1Degree或2Degree
|
||
run keyword if "${Degree}"=="1Degree" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/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 1
|
||
... AND click element xpath=/html/body/div/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[2]/div/div/label[2]
|
||
|
||
SourceIPGroupAdd
|
||
[Arguments] ${name} ${ip_type} ${object_name}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${name}:名称
|
||
... ${ip_type}:填入Ip或者Geography
|
||
... ${object_name}:列表形式,列表中是对象的名字
|
||
SourceCreate-name ${name}
|
||
Select-ip_type ${ip_type}
|
||
sleep 1
|
||
click element xpath=//*[@id="policy_Manipulation2"]/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]
|
||
Create-Sub-Objects ${object_name}
|
||
NewObject.Create-ok
|
||
|
||
SourceCreate-name
|
||
[Arguments] ${objName}
|
||
sleep 2
|
||
input text id=objectAdd_name ${objName}
|
||
|
||
SourceCreate-ok
|
||
sleep 2
|
||
click button id=objectAdd_ok
|
||
|
||
DestinationCreate-name
|
||
[Arguments] ${objName}
|
||
sleep 2
|
||
input text xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[1]/div/div[1]/input ${objName}
|
||
|
||
DestinationCreate-ok
|
||
sleep 2
|
||
click button xpath=/html/body/div[1]/div/div[3]/div[2]/div/div[1]/form/div/div[5]/div[2]/div[2]/div/div[2]/button[1]
|
||
|
||
|
||
Proxy-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 1
|
||
run keyword if "${SourceType}"=="ID" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
|
||
run keyword if "${SourceType}"=="Name" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[3]
|
||
run keyword if "${SourceType}"=="Action" run keywords sleep 1
|
||
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[4]
|
||
sleep 1
|
||
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 1
|
||
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/i
|
||
sleep 1
|
||
click element xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr[1]
|
||
sleep 1
|
||
|
||
EditButton
|
||
sleep 1
|
||
click element xpath=//*[@id="appEdit"]/span/div/div[2]
|
||
sleep 1
|
||
|
||
Initialize-Policie
|
||
[Arguments] ${InitializeAction}
|
||
[Documentation] 调用次关键字前需要添加必填参数:
|
||
... ${InitializeAction}:根据用例进行填写,意思就是是那一个action就不要点击哪一个,以免初始化失败
|
||
run keyword if "${InitializeAction}"=="Allow" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... AND sleep 1
|
||
... ELSE IF "${InitializeAction}"=="Deny" run keywords sleep 1
|
||
... AND click element id=proxyManipulationallow
|
||
... ELSE IF "${InitializeAction}"=="Monitor" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... ELSE IF "${InitializeAction}"=="Redirect" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... ELSE IF "${InitializeAction}"=="Replace" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... ELSE IF "${InitializeAction}"=="Hijack" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... ELSE IF "${InitializeAction}"=="Insert" run keywords sleep 1
|
||
... AND click element id=proxyManipulationdeny
|
||
... ELSE log 不修改
|
||
sleep 1
|
||
${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 1
|
||
... 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 1
|
||
${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 1
|
||
... 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 1
|
||
|
||
Delete-Proxy
|
||
[Arguments] ${securityname}
|
||
|
||
Menu policys Security Policy
|
||
sleep 2
|
||
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 1
|
||
click element xpath=/html/body/div/div[1]/div[1]/ul/li[3]
|
||
sleep 1
|
||
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 ${securityname}
|
||
sleep 1
|
||
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/i
|
||
sleep 1
|
||
Run Keyword And Ignore Error click element xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr[1]
|
||
sleep 2
|
||
sleep 1
|
||
Run Keyword And Ignore Error click element id=appDel
|
||
sleep 1
|
||
Run Keyword And Ignore Error click element xpath=/html/body/div/div/div[3]/button[2]
|
||
sleep 1
|
||
|
||
Delete-object
|
||
[Arguments] ${obj}
|
||
FOR ${num} ${key} IN ENUMERATE @{obj}
|
||
Forname ${obj}[${key}] ${key}
|
||
|
||
END
|
||
|
||
Forname
|
||
[Arguments] ${objectname} ${key}
|
||
FOR ${i} IN @{objectname}
|
||
Menu objects ${key}
|
||
sleep 2
|
||
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/div/div[2]/div/div/div/input #点击输入框
|
||
sleep 2
|
||
click element xpath=/html/body/div/div[1]/div[1]/ul/li[3] #点击name为搜索类型
|
||
sleep 2
|
||
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 ${i} #输入搜索内容
|
||
sleep 2
|
||
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/i #点击搜索按钮
|
||
sleep 2
|
||
Run Keyword And Ignore Error click element xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr[1]/td[1]/div/div/span #选择搜索到的列表
|
||
sleep 2
|
||
sleep 1
|
||
Run Keyword And Ignore Error click element id=objectDel #点击删除按钮
|
||
sleep 1
|
||
Run Keyword And Ignore Error click element xpath=/html/body/div/div/div[3]/button[2]
|
||
sleep 1
|
||
END
|