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/proxyTCPOptions/ProxyTCPOptions.robot

1042 lines
72 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 Selenium2Library
Resource ../Menu.robot
#Resource ../SecurityPolicy/SourceAndDestination.robot
Resource ../objects/NewObject.robot
*** Keywords ***
UIAddProxyTCPOptions
[Arguments] ${TCPProxy} ${TCPClientDict} ${TCPServerDict} ${SourceInfo}=null ${DestinationInfo}=null ${FilterInfo}=null
${return} ${Tcpname} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} Tcpname
${Tcpname} Run Keyword If "${return}"=="FAIL" or "${Tcpname}"=="${EMPTY}" set variable null
... ELSE set variable ${Tcpname}
${return} ${EnableTCPPassthrough} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} EnableTCPPassthrough
${EnableTCPPassthrough} Run Keyword If "${return}"=="FAIL" or "${EnableTCPPassthrough}}"=="${EMPTY}" set variable null
... ELSE set variable ${EnableTCPPassthrough}
${return} ${BypassDuplicatedPacket} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} BypassDuplicatedPacket
${BypassDuplicatedPacket} Run Keyword If "${return}"=="FAIL" or "${BypassDuplicatedPacket}}"=="${EMPTY}" set variable null
... ELSE set variable ${BypassDuplicatedPacket}
Comment 打开菜单新建策略输入name
Create-Proxy-TCP-Options ${Tcpname}
#Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" or "${SourceInfo}"=="null" log there is no SourceInfoDict
... ELSE Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" or "${SourceInfo}"=="null" log there is no SourceInfoDict
... ELSE CreateEditDeleteSources ${SourceInfo}
Run Keyword If "${DestinationInfo}"=="${EMPTY}" or "${DestinationInfo}"=="null" log there is no DestinationInfo
... ELSE Create-Destination-Button
Run Keyword If "${DestinationInfo}"=="${EMPTY}" or "${DestinationInfo}"=="null" log there is no DestinationInfo
... ELSE CreateEditDeleteDestination ${DestinationInfo}
Run Keyword If "${FilterInfo}"=="${EMPTY}" log there is no FilterInfo
... ELSE Filter-create ${FilterInfo}
Run Keyword If "${EnableTCPPassthrough}"=="${EMPTY}" or "${EnableTCPPassthrough}"=="null" log there is no EnableTCPPassthrough
... ELSE TCP-Enable-TCP-Passthrough ${EnableTCPPassthrough}
Run Keyword If "${BypassDuplicatedPacket}"=="${EMPTY}" or "${BypassDuplicatedPacket}"=="null" log there is no BypassDuplicatedPacket
... ELSE TCP-Bypass-Duplicated-Packet ${BypassDuplicatedPacket}
TCP-Client-side-Parameters ${TCPClientDict}
TCP-Server-side-Parameters ${TCPServerDict}
TCP-OK
TCP-Assertion ${Tcpname}
UIUpdateProxyTCPOptions
[Arguments] ${TCPProxy} ${TCPClientDict} ${TCPServerDict} ${SourceInfo}=null ${DestinationInfo}=null ${FilterInfo}=null
${return} ${Tcpname} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} Tcpname
${Tcpname} Run Keyword If "${return}"=="FAIL" or "${Tcpname}"=="${EMPTY}" set variable null
... ELSE set variable ${Tcpname}
${return} ${Edittcpname} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} Edittcpname
${Edittcpname} Run Keyword If "${return}"=="FAIL" or "${Edittcpname}"=="${EMPTY}" set variable ${Tcpname}
... ELSE set variable ${Edittcpname}
${return} ${EnableTCPPassthrough} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} EnableTCPPassthrough
${EnableTCPPassthrough} Run Keyword If "${return}"=="FAIL" or "${EnableTCPPassthrough}}"=="${EMPTY}" set variable null
... ELSE set variable ${EnableTCPPassthrough}
${return} ${BypassDuplicatedPacket} Run Keyword And Ignore Error Get From Dictionary ${TCPProxy} BypassDuplicatedPacket
${BypassDuplicatedPacket} Run Keyword If "${return}"=="FAIL" or "${BypassDuplicatedPacket}}"=="${EMPTY}" set variable null
... ELSE set variable ${BypassDuplicatedPacket}
Edit-Proxy-TCP-Options ${Tcpname}
Run Keyword If "${Edittcpname}"=="${EMPTY}" or "${Edittcpname}"=="null" log there is no Edittcpname
... ELSE Edit-Proxy-TCP-Name ${Edittcpname}
Run Keyword If "${SourceInfo}"=="${EMPTY}" or "${SourceInfo}"=="null" log there is no SourceInfoDict
... ELSE Create-Source-Button
Run Keyword If "${SourceInfo}"=="${EMPTY}" or "${SourceInfo}"=="null" log there is no SourceInfoDict
... ELSE CreateEditDeleteSources ${SourceInfo}
Run Keyword If "${DestinationInfo}"=="${EMPTY}" or "${DestinationInfo}"=="null" log there is no DestinationInfo
... ELSE Create-Destination-Button
Run Keyword If "${DestinationInfo}"=="${EMPTY}" or "${DestinationInfo}"=="null" log there is no DestinationInfo
... ELSE CreateEditDeleteDestination ${DestinationInfo}
Run Keyword If "${FilterInfo}"=="${EMPTY}" log there is no FilterInfo
... ELSE Filter-create ${FilterInfo}
Run Keyword If "${EnableTCPPassthrough}"=="${EMPTY}" or "${EnableTCPPassthrough}"=="null" log there is no EnableTCPPassthrough
... ELSE TCP-Enable-TCP-Passthrough ${EnableTCPPassthrough}
Run Keyword If "${BypassDuplicatedPacket}"=="${EMPTY}" or "${BypassDuplicatedPacket}"=="null" log there is no BypassDuplicatedPacket
... ELSE TCP-Bypass-Duplicated-Packet ${BypassDuplicatedPacket}
TCP-Client-side-Parameters ${TCPClientDict}
TCP-Server-side-Parameters ${TCPServerDict}
TCP-OK
TCP-Assertion ${Edittcpname}
Create-Source-Button
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[2]/div[1]/div/div #点击添加源ip
Create-Destination-Button
click element xpath=/html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[3]/div[1]/div/div #点击添加目的ip
Create-Proxy-TCP-Options
[Arguments] ${tcpname}
sleep ${sleep}
Menu settings Advanced
sleep ${sleep}
click element id=Advanced/advanced #点击Proxy-TCP-Options
sleep ${sleep}
click element id=proxyTCPCreate #点击Create按钮
sleep ${sleep}
input text id=advancedAdd_policyName ${tcpname} #输入name
sleep ${sleep}
Edit-Proxy-TCP-Options
[Arguments] ${tcpname}
sleep ${sleep}
Menu settings Advanced
sleep ${sleep}
click element id=Advanced/advanced #点击Proxy-TCP-Options
sleep ${sleep}
Proxy-TCP-Options-Search ${tcpname} Name #搜索策略
sleep ${sleep}
click element id=proxyTCPEdit #点击Edit按钮
sleep ${sleep}
Edit-Proxy-TCP-Name
[Arguments] ${Edittcpname}
input text id=advancedAdd_policyName ${Edittcpname} #输入name
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/div[1]/div[1]/div/div[2]/form/div[2]
... ELSE set variable /html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[3]
${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}
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}
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/div[1]/div[1]/div/div[2]/form/div[2]
... ELSE set variable /html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[3]
${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}
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 ProxyTCPOptions.Learn-From-Protocols ${Protocols1}
... AND ProxyTCPOptions.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 ProxyTCPOptions.Learn-From-Protocols ${Protocols1}
... AND ProxyTCPOptions.Learning-Depth ${PolicyType} ${Degree}
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[3]/div/div[1]/input ${Times}
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[4]/div/div[1]/input ${Numbers}
... AND sleep ${sleep}
... AND input text xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[5]/div/div[1]/input ${Limits}
... AND sleep ${sleep}
DestinationCreate-ok ${PolicyType}
Learn-From-Protocols
[Arguments] ${Protocols1}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Protocols1}:填入HTTP或SSL或者HTTPSSL
... 判断选择用什么样的协议
run keyword if "${Protocols1}"=="HTTP" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[1]
run keyword if "${Protocols1}"=="SSL" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
run keyword if "${Protocols1}"=="HTTPSSL" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[1]
... AND sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
Learning-Depth
[Arguments] ${PolicyType} ${Degree}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Degree}:填入1Degree或2Degree
... 判断是用1Degree或2Degree
run keyword if "${Degree}"=="1Degree" run keywords sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[2]/div/div/label[1]
run keyword if "${Degree}"=="2Degree" run keywords sleep ${sleep}
... AND click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[5]/div[2]/div/div/label[2]
SourceIPGroupAdd
[Arguments] ${PolicyType} ${Name} ${Ip_type} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography
... ${ObjectName}:列表形式,列表中是对象的名字
SourceCreate-name ${Name}
Select-ip_type ${Ip_type}
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]
Create-Sub-Objects ${ObjectName}
NewObject.Create-ok
DestinationIPGroupAdd
[Arguments] ${PolicyType} ${Name} ${Ip_type} ${ObjectName}
[Documentation] 调用次关键字前需要添加必填参数:
... ${Name}:名称
... ${Ip_type}:填入Ip或者Geography
... ${ObjectName}:列表形式,列表中是对象的名字
SourceCreate-name ${Name}
Select-ip_type ${Ip_type}
sleep ${sleep}
click element xpath=${PolicyType}/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]
Create-Sub-Objects ${ObjectName}
NewObject.Create-ok
SourceCreate-name
[Arguments] ${ObjName}
sleep ${sleep}
input text id=objectAdd_name1 ${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]
# TCPFilter
# [Arguments] ${Filtercreate} ${SNIname} ${Filter}=yes
# #判断是否添加Filter${Filter}=yes,为添加Filter否则不添加Filter
# run keyword if "${Filter}"=="yes" run keywords sleep ${sleep}
# ... AND Filter-create ${Filtercreate} ${SNIname}
# ... ELSE log 不添加Filter
Filter-create
[Arguments] ${FilterInfo}
${return} ${Filtercreate} Run Keyword And Ignore Error Get From Dictionary ${FilterInfo} Filtercreate
${Filtercreate} Run Keyword If "${return}"=="FAIL" or "${Filtercreate}"=="${EMPTY}" set variable null
... ELSE set variable ${Filtercreate}
${return} ${SNIname} Run Keyword And Ignore Error Get From Dictionary ${FilterInfo} SNIname
${SNIname} Run Keyword If "${return}"=="FAIL" or "${SNIname}"=="${EMPTY}" set variable null
... ELSE set variable ${SNIname}
FOR ${i} IN @{Filtercreate}
sleep ${sleep}
click element id=interceptionadd_add_filter
sleep ${sleep}
run keyword if "${i}"=="SNI" run keywords sleep ${sleep}
... AND click element id=interceptionadd_checkappshow0
... AND Create-Object-Search ${SNIname} ${i}
... AND sleep ${sleep}
${class}= Get Element Attribute xpath=//*[@id="policy_paper_left"]/div[2]/form/div[5]/div[1]/div[1]/label[contains(text(), "${i}")]/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=//*[@id="policy_paper_left"]/div[2]/form/div[5]/div[1]/div[1]/label[contains(text(), "${i}")]/following-sibling::div/div[2]/i
END
Create-Object-Search
[Arguments] ${name} ${filter}
[Documentation] 调用次关键字前需要添加必填参数:
... ${name}:填入是一个列表列表内容为object的name
... 选择search对象
sleep ${sleep}
click element xpath=//*[@id="policy_paper_left"]/div[2]/form/div[5]/div[1]/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
TCP-Enable-TCP-Passthrough
[Arguments] ${Enable-TCP-Passthrough}
#判断是否开启Enable TCP Passthrough按钮${Enable-TCP-Passthrough}=open,为开启,否则不添开启
run keyword if "${Enable-TCP-Passthrough}"=="open" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="proxytcpThrough"]/label[contains(text(), "Enable TCP Passthrough")]/following-sibling::div/div #点击Enable-TCP-Passthrough按钮开启
... AND sleep ${sleep}
... ELSE log 不开启
TCP-Bypass-Duplicated-Packet
[Arguments] ${Bypass-Duplicated-Packet}
#判断是否开启Bypass Duplicated Packet按钮${Bypass-Duplicated-Packet}=open,为开启,否则不添开启
run keyword if "${Bypass-Duplicated-Packet}"=="open" run keywords sleep ${sleep}
... AND click element xpath=//*[@id="proxyduplicatedPacket"]/label[contains(text(), "Bypass Duplicated Packet")]/following-sibling::div/div #点击Bypass-Duplicated-Packet按钮开启
... AND sleep ${sleep}
... ELSE log 不开启
TCP-Client-side-Parameters
[Arguments] ${TCPClientDict}
${Clientelement} set variable /html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[9]/div[2]/div[1]
${return} ${ClientOverrideMSS} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientOverrideMSS
${ClientOverrideMSS} Run Keyword If "${return}"=="FAIL" or "${ClientOverrideMSS}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientOverrideMSS}
${return} ${ClientMSSvalue} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientMSSvalue
${ClientMSSvalue} Run Keyword If "${return}"=="FAIL" or "${ClientMSSvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientMSSvalue}
${return} ${ClientNoDelay} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientNoDelay
${ClientNoDelay} Run Keyword If "${return}"=="FAIL" or "${ClientNoDelay}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientNoDelay}
${return} ${Clientttlvalue} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} Clientttlvalue
${Clientttlvalue} Run Keyword If "${return}"=="FAIL" or "${Clientttlvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${Clientttlvalue}
${return} ${ClientKeepalive} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientKeepalive
${ClientKeepalive} Run Keyword If "${return}"=="FAIL" or "${ClientKeepalive}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientKeepalive}
${return} ${ClientProbeNumber} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientProbeNumber
${ClientProbeNumber} Run Keyword If "${return}"=="FAIL" or "${ClientProbeNumber}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientProbeNumber}
${return} ${ClientIdleTime} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientIdleTime
${ClientIdleTime} Run Keyword If "${return}"=="FAIL" or "${ClientIdleTime}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientIdleTime}
${return} ${ClientInterval} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientInterval
${ClientInterval} Run Keyword If "${return}"=="FAIL" or "${ClientInterval}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientInterval}
${return} ${ClientUserTimeout} Run Keyword And Ignore Error Get From Dictionary ${TCPClientDict} ClientUserTimeout
${ClientUserTimeout} Run Keyword If "${return}"=="FAIL" or "${ClientUserTimeout}"=="${EMPTY}" set variable null
... ELSE set variable ${ClientUserTimeout}
sleep ${sleep}
click element id=tab-first #点击Client-side Parameters
sleep ${sleep}
${class}= Get Element Attribute xpath=${Clientelement}/div/form/div/label[contains(text(), "Override MSS")]/following-sibling::div/div class
#判断是否开启Override MSS按钮${Override-MSS}=open,为开启,否则不添开启
run keyword if "${class}"=="el-switch" and "${ClientOverrideMSS}"=="open" run keywords sleep ${sleep}
... AND click element xpath=${Clientelement}/div/form/div/label[contains(text(), "Override MSS")]/following-sibling::div/div #点击Override-MSS按钮开启
... AND sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div[2]/div/div/input ${ClientMSSvalue} #输入MSS内容
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class}"=="el-switch is-checked" and "${ClientOverrideMSS}"=="open" run keywords sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div[2]/div/div/input ${ClientMSSvalue} #输入MSS内容
... AND sleep ${sleep}
... ELSE log 不操作
run keyword if "${class}"=="el-switch is-checked" and "${ClientOverrideMSS}"!="open" run keywords sleep ${sleep}
... AND click element xpath=${Clientelement}/div/form/div/label[contains(text(), "Override MSS")]/following-sibling::div/div #点击Override-MSS按钮关闭
... AND sleep ${sleep}
... ELSE log 不操作
#判断是否开启No Delay按钮${No-Delay}=open,为开启,否则不添开启
${class1}= Get Element Attribute xpath=${Clientelement}/div/form/div/label[contains(text(), "No Delay")]/following-sibling::div/div class
run keyword if "${class1}"=="el-switch" and "${ClientNoDelay}"=="open" run keywords sleep ${sleep}
... AND click element xpath=${Clientelement}/div/form/div/label[contains(text(), "No Delay")]/following-sibling::div/div #点击No-Delay按钮开启
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class1}"=="el-switch is-checked" and "${ClientNoDelay}"!="open" run keywords sleep ${sleep}
... AND click element xpath=${Clientelement}/div/form/div/label[contains(text(), "No Delay")]/following-sibling::div/div #点击No-Delay按钮关闭
... AND sleep ${sleep}
... ELSE log 不操作
input text xpath=${Clientelement}/div/form/div/label[contains(text(), "TTL")]/following-sibling::div/div/input ${Clientttlvalue} #输入ttl内容
sleep ${sleep}
#判断是否开启Keepalive按钮${Keepalive}=open,为开启,否则不添开启
${class2}= Get Element Attribute xpath=${Clientelement}/div/form/div/label[contains(text(), "Keepalive")]/following-sibling::div/div class
run keyword if "${class2}"=="el-switch" and "${ClientKeepalive}"=="open" run keywords sleep ${sleep}
... AND click element xpath=${Clientelement}/div/form/div/label[contains(text(), "Keepalive")]/following-sibling::div/div #点击Keepalive按钮开启
... AND sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div/div/form/div[1]/label[contains(text(), "Probe Number")]/following-sibling::div/div/input ${ClientProbeNumber} #输入Probe Number内容
... AND sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div/div/form/div[2]/label[contains(text(), "Idle Time")]/following-sibling::div/div/input ${ClientIdleTime} #输入Idle Time内容
... AND sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div/div/form/div[3]/label[contains(text(), "Interval")]/following-sibling::div/div/input ${ClientInterval} #输入Interval内容
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class2}"=="el-switch is-checked" and "${ClientKeepalive}"=="open" run keywords sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div/div/form/div[1]/label[contains(text(), "Probe Number")]/following-sibling::div/div/input ${ClientProbeNumber} #输入Probe Number内容
... AND sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div/div/form/div[2]/label[contains(text(), "Idle Time")]/following-sibling::div/div/input ${ClientIdleTime} #输入Idle Time内容
... AND sleep ${sleep}
... AND input text xpath=${Clientelement}/div/form/div/div/form/div[3]/label[contains(text(), "Interval")]/following-sibling::div/div/input ${ClientInterval} #输入Interval内容
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class2}"=="el-switch is-checked" and "${ClientKeepalive}"!="open" run keywords sleep ${sleep}
... AND click element xpath=${Clientelement}/div/form/div/label[contains(text(), "Keepalive")]/following-sibling::div/div #点击Keepalive按钮关闭
... AND sleep ${sleep}
... ELSE log 不开启
input text xpath=${Clientelement}/div/form/div/label[contains(text(), "User Timeout")]/following-sibling::div/div/input ${ClientUserTimeout} #输入User Timeout内容
sleep ${sleep}
TCP-Server-side-Parameters
[Arguments] ${TCPServerDict}
${Serverelement} set variable /html/body/div[1]/div/div[3]/div[2]/div/div/div[1]/div[1]/div/div[2]/form/div[9]/div[2]/div[2]
${return} ${ServerOverrideMSS} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerOverrideMSS
${ServerOverrideMSS} Run Keyword If "${return}"=="FAIL" or "${ServerOverrideMSS}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerOverrideMSS}
${return} ${ServerMSSvalue} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerMSSvalue
${ServerMSSvalue} Run Keyword If "${return}"=="FAIL" or "${ServerMSSvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerMSSvalue}
${return} ${ServerNoDelay} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerNoDelay
${ServerNoDelay} Run Keyword If "${return}"=="FAIL" or "${ServerNoDelay}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerNoDelay}
${return} ${Serverttlvalue} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} Serverttlvalue
${Serverttlvalue} Run Keyword If "${return}"=="FAIL" or "${Serverttlvalue}"=="${EMPTY}" set variable null
... ELSE set variable ${Serverttlvalue}
${return} ${ServerKeepalive} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerKeepalive
${ServerKeepalive} Run Keyword If "${return}"=="FAIL" or "${ServerKeepalive}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerKeepalive}
${return} ${ServerProbeNumber} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerProbeNumber
${ServerProbeNumber} Run Keyword If "${return}"=="FAIL" or "${ServerProbeNumber}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerProbeNumber}
${return} ${ServerIdleTime} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerIdleTime
${ServerIdleTime} Run Keyword If "${return}"=="FAIL" or "${ServerIdleTime}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerIdleTime}
${return} ${ServerInterval} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerInterval
${ServerInterval} Run Keyword If "${return}"=="FAIL" or "${ServerInterval}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerInterval}
${return} ${ServerUserTimeout} Run Keyword And Ignore Error Get From Dictionary ${TCPServerDict} ServerUserTimeout
${ServerUserTimeout} Run Keyword If "${return}"=="FAIL" or "${ServerUserTimeout}"=="${EMPTY}" set variable null
... ELSE set variable ${ServerUserTimeout}
click element id=tab-second #点击Server-side Parameters
sleep ${sleep}
#判断是否开启Override MSS按钮${Override-MSS}=open,为开启,否则不添开启
${class}= Get Element Attribute xpath=${Serverelement}/div/form/div/label[contains(text(), "Override MSS")]/following-sibling::div/div class
#判断是否开启Override MSS按钮${Override-MSS}=open,为开启,否则不添开启
run keyword if "${class}"=="el-switch" and "${ServerOverrideMSS}"=="open" run keywords sleep ${sleep}
... AND click element xpath=${Serverelement}/div/form/div/label[contains(text(), "Override MSS")]/following-sibling::div/div #点击Override-MSS按钮开启
... AND sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div[2]/div/div/input ${ServerMSSvalue} #输入MSS内容
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class}"=="el-switch is-checked" and "${ServerOverrideMSS}"=="open" run keywords sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div[2]/div/div/input ${ServerMSSvalue} #输入MSS内容
... AND sleep ${sleep}
... ELSE log 不操作
run keyword if "${class}"=="el-switch is-checked" and "${ServerOverrideMSS}"!="open" run keywords sleep ${sleep}
... AND click element xpath=${Serverelement}/div/form/div/label[contains(text(), "Override MSS")]/following-sibling::div/div #点击Override-MSS按钮关闭
... AND sleep ${sleep}
... ELSE log 不操作
#判断是否开启No Delay按钮${No-Delay}=open,为开启,否则不添开启
${class1}= Get Element Attribute xpath=${Serverelement}/div/form/div/label[contains(text(), "No Delay")]/following-sibling::div/div class
run keyword if "${class1}"=="el-switch" and "${ServerNoDelay}"=="open" run keywords sleep ${sleep}
... AND click element xpath=${Serverelement}/div/form/div/label[contains(text(), "No Delay")]/following-sibling::div/div #点击No-Delay按钮开启
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class1}"=="el-switch is-checked" and "${ServerNoDelay}"!="open" run keywords sleep ${sleep}
... AND click element xpath=${Serverelement}/div/form/div/label[contains(text(), "No Delay")]/following-sibling::div/div #点击No-Delay按钮关闭
... AND sleep ${sleep}
... ELSE log 不操作
input text xpath=${Serverelement}/div/form/div/label[contains(text(), "TTL")]/following-sibling::div/div/input ${Serverttlvalue} #输入ttl内容
sleep ${sleep}
#判断是否开启Keepalive按钮${Keepalive}=open,为开启,否则不添开启
${class2}= Get Element Attribute xpath=${Serverelement}/div/form/div/label[contains(text(), "Keepalive")]/following-sibling::div/div class
run keyword if "${class2}"=="el-switch" and "${ServerKeepalive}"=="open" run keywords sleep ${sleep}
... AND click element xpath=${Serverelement}/div/form/div/label[contains(text(), "Keepalive")]/following-sibling::div/div #点击Keepalive按钮开启
... AND sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div/div/form/div[1]/label[contains(text(), "Probe Number")]/following-sibling::div/div/input ${ServerProbeNumber} #输入Probe Number内容
... AND sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div/div/form/div[2]/label[contains(text(), "Idle Time")]/following-sibling::div/div/input ${ServerIdleTime} #输入Idle Time内容
... AND sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div/div/form/div[3]/label[contains(text(), "Interval")]/following-sibling::div/div/input ${ServerInterval} #输入Interval内容
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class2}"=="el-switch is-checked" and "${ServerKeepalive}"=="open" run keywords sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div/div/form/div[1]/label[contains(text(), "Probe Number")]/following-sibling::div/div/input ${ServerProbeNumber} #输入Probe Number内容
... AND sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div/div/form/div[2]/label[contains(text(), "Idle Time")]/following-sibling::div/div/input ${ServerIdleTime} #输入Idle Time内容
... AND sleep ${sleep}
... AND input text xpath=${Serverelement}/div/form/div/div/form/div[3]/label[contains(text(), "Interval")]/following-sibling::div/div/input ${ServerInterval} #输入Interval内容
... AND sleep ${sleep}
... ELSE log 不开启
run keyword if "${class2}"=="el-switch is-checked" and "${ServerKeepalive}"!="open" run keywords sleep ${sleep}
... AND click element xpath=${Serverelement}/div/form/div/label[contains(text(), "Keepalive")]/following-sibling::div/div #点击Keepalive按钮关闭
... AND sleep ${sleep}
... ELSE log 不开启
sleep ${sleep}
input text xpath=${Serverelement}/div/form/div/label[contains(text(), "User Timeout")]/following-sibling::div/div/input ${ServerUserTimeout} #输入User Timeout内容
sleep ${sleep}
TCP-OK
sleep ${sleep}
click element id=proxyManipulationSuccess #点击OK
sleep ${sleep}
TCP-Assertion
[Arguments] ${name} ${search}=Name
Proxy-TCP-Options-Search ${name} ${search} #搜索刚新建的name
${text1} Get Text xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr[1]/td[2]/div/div/p #获取点击后页面文本信息
Should Be Equal As Strings ${text1} ${name} #断言
Proxy-TCP-Options-Search
[Arguments] ${value} ${search}
sleep ${sleep}
click element id=sidebarAdvanced
sleep ${sleep}
Wait Until Element Is Visible xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[3]/div[1]/div/div[1]/span/div/div/div[2]/div/div/div/input 20
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[3]/div[1]/div/div[1]/span/div/div/div[2]/div/div/div/input #点击搜索框
sleep ${sleep}
#判断是使用name搜索还是id搜索
run keyword if "${search}"=="Name" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[3]
... AND input text xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[3]/div[1]/div/div[1]/span/div/div/div[2]/div/div[1]/div[3]/div/input ${value}
... ELSE IF "${search}"=="ID" run keywords sleep ${sleep}
... AND click element xpath=/html/body/div/div[1]/div[1]/ul/li[2]
... AND input text xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[3]/div[1]/div/div[1]/span/div/div/div[2]/div/div[1]/div[3]/div/input ${value}
... AND sleep ${sleep}
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[3]/div[1]/div/div[1]/span/div/i #点击搜索按钮
sleep ${sleep}
Run Keyword And Ignore Error click element xpath=//*[@id="ly-table1-listcontent"]/div/div[3]/table/tbody/tr[1] #点击搜索到的列表
sleep ${sleep}
Delete-Proxy-estimate
[Arguments] ${securityname}
run keyword if "${securityname}"!="null" run keywords sleep ${sleep}
... AND Delete-Proxy ${securityname}
... ELSE log go on
Delete-Proxy
[Arguments] ${securityname}
Menu settings Advanced
sleep ${sleep}
Proxy-TCP-Options-Search ${securityname} Name
sleep ${sleep}
Run Keyword And Ignore Error click element id=proxyTCPDel
sleep ${sleep}
Run Keyword And Ignore Error click element xpath=/html/body/div/div/div[3]/button[2]
sleep ${sleep}
Delete-object-estimate
[Arguments] ${obj}
run keyword if "${obj}"!="null" run keywords sleep ${sleep}
... AND Delete-object ${obj}
... ELSE log go on
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 ${sleep}
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 ${sleep}
click element xpath=/html/body/div/div[1]/div[1]/ul/li[3] #点击name为搜索类型
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 ${i} #输入搜索内容
sleep ${sleep}
click element xpath=//*[@id="app"]/div/div[3]/div[2]/div/div[1]/div[1]/span/div/i #点击搜索按钮
sleep ${sleep}
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 ${sleep}
sleep ${sleep}
Run Keyword And Ignore Error click element id=objectDel #点击删除按钮
sleep ${sleep}
Run Keyword And Ignore Error click element xpath=/html/body/div/div/div[3]/button[2]
sleep ${sleep}
END