在写UI自动化脚本的时候,我们需要等待元素加载出来,在进行点击或者输入操作,因此需要对系统基础关键字进行二次封装,将文件放到word文件夹下面,封装好的脚本如下:
*** Settings ***
Library Selenium2Library timeout=30
Library DateTime
Library Collections
Library String
Library XML
Library OperatingSystem
Library BuiltIn
Library String
Library Process
Library Dialogs
Library Screenshot
Library Telnet
Library RequestsLibrary
Library AutoItLibrary*** Keywords ***
等待元素出现[Arguments] ${
locator} ${
index}=0${
number} evaluate ${
index}+1: FOR ${
i} IN RANGE 50\ wait until page contains element ${
locator} 30 page not contains element\ Run Keyword And Ignore Error Wait Until Element Is Visible ${
locator} 10 element is not visible\ Wait Until Element Is Enabled ${
locator} 30 element is not Enabled\ @{
element} Get WebElements ${
locator}\ ${
len} 得到长度 ${
element}\ Exit For Loop If ${
len} >= ${
number}Set Focus To Element @{
element}[${
index}][Return] @{
element}退出驱动[Documentation] 退出驱动,自动判断是Window还是Linux环境... 关闭:谷歌、IE、火狐的驱动,防止驱动未关出现问题${
addr} Evaluate type(pathlib2.Path()) pathlib2Run Keyword If "${addr}" == "<class 'pathlib2.WindowsPath'>" Win关闭Run Keyword If "${addr}" == "<class 'pathlib2.PosixPath'>" Linux关闭Win关闭[Documentation] Window环境中运行完毕后关闭浏览器 的驱动 (ie和谷歌)Close All Browsersevaluate os.system('taskkill /f /im IEDriverServer.exe') os #关闭IE驱动evaluate os.system('taskkill /f /im chromedriver.exe') os #关闭谷歌驱动evaluate os.system('taskkill /f /im geckodriver.exe') os #关闭火狐驱动Linux关闭[Documentation] Linux环境中运行完毕后关闭谷歌浏览器的驱动Close All Browsersevaluate os.system('killall chrome') osevaluate os.system('killall chromedriver') os打开浏览器[Arguments] ${
url} ${
browser}=headlesschrome[Documentation] 打开浏览器,参数${
url}输入的是网址... 参数${
browser}:是浏览器类型,默认使用谷歌后台运行... 参数:... IE浏览器 --- ie... 谷歌浏览器 --- gc... 火狐浏览器 --- ff... 谷歌后台模式 --- headlesschrome... 火狐后台模式 --- headlessfirefoxAppend To Environment Variable PATH /usr/local/binopen browser ${
url} ${
browser}Maximize Browser Windowreload page刷新网页[Documentation] 刷新网页reload page关闭浏览器[Documentation] 关闭浏览器sleep 2close browser退出驱动关闭所有浏览器[Documentation] 关闭所有浏览器close all browsers退出驱动鼠标悬停[Arguments] ${
locator} ${
index}=0[Documentation] 悬浮鼠标。... 参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Mouse Over @{
el}[${
index}]点击元素[Arguments] ${
locator} ${
index}=0[Documentation] 点击元素。... 参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s click element @{
el}[${
index}]点击按钮[Arguments] ${
locator} ${
index}=0[Documentation] 参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用,@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Click Button @{
el}[${
index}]点击链接[Arguments] ${
locator} ${
index}=0[Documentation] 参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用,@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Click Link @{
el}[${
index}]双击[Arguments] ${
locator} ${
index}=0[Documentation] 参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用,@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s double click element @{
el}[${
index}]输入文本[Arguments] ${
locator} ${
text} ${
index}=0[Documentation] 参数${
locator}:是定位 方式,例如:id=kw;... ${
text}是输入的文本;... ${
index}是元素索引:当定位是一组元素时候使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s input text @{
el}[${
index}] ${
text}canvas输入文本[Arguments] ${
locator} ${
text} @{
size}[Documentation] 参数${
locator}:是定位 方式,例如:id=kw;... ${
text}是输入的文本;... @{
size}是一个列表:如果canvas是唯一定位,... 传入3个参数【150,10,100】,分别表示:输入字体大小... 、距离左边画板的距离,距离上边画板的距离,... 如果canvas不是唯一定位,传入4个参数【1,150,10,100】... ,第一个参数为要操作元素的索引值,后3个和上面相同${
x} 得到长度 ${
size}${
index} BuiltIn.Run Keyword If ${
x} == 3 BuiltIn.Set Variable 0... ELSE IF ${
x} == 4 BuiltIn.Set Variable @{
size}[0]@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_01_${
name} #给canvas标签添加idBuiltIn.Run Keyword If ${
x} == 3 Execute Javascript el=document.querySelector('#id_01_${name}');context=el.getContext("2d");context.fillStyle='#000000';context.font = "bold @{size}[0]px Arial";context.textAlign = "left";context.textBaseline = "middle";context.strokeText("${text}", @{
size}[1], @{
size}[2]);... ELSE IF ${
x} == 4 Execute Javascript el=document.querySelector('#id_01_${name}');context=el.getContext("2d");context.fillStyle='#000000';context.font = "bold @{size}[1]px Arial";context.textAlign = "left";context.textBaseline = "middle";context.strokeText("${text}", @{
size}[2], @{
size}[3]);点击radio[Arguments] ${
locator} ${
index}=0[Documentation] ${
locator}定位;... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}${
time} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
time}Execute Javascript document.querySelectorAll('#id_${time}')[0].setAttribute('name','radio_${time}') #新增name的属性,如果有的话进行修改成新的Execute Javascript document.querySelectorAll('#id_${time}')[0].setAttribute('value','radio_${time}') #新增value的属性,如果有的话进行修改成新的BuiltIn.Wait Until Keyword Succeeds 30 s 2 s select radio button radio_${
time} radio_${
time}点击checkbox[Arguments] ${
locator} ${
index}=0[Documentation] 点击复选框;参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s select checkbox @{
el}[${
index}]取消checkbox[Arguments] ${
locator} ${
index}=0[Documentation] 取消选择复选框;参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s unselect checkbox @{
el}[${
index}]下拉框[Arguments] ${
locator} ${
value} ${
index}=0[Documentation] 使用标签值选择列表下拉框;... 参数${
locator}:是定位 方式;... 参数${
value}:是标签option中value的值;... ${
index}是元素索引:当定位是一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s select from list by value @{
el}[${
index}] ${
value}下拉框index[Arguments] ${
locator} ${
index_01} ${
index}=0[Documentation] 使用索引值选择列表下拉框;... 参数${
locator}:是定位 方式;... 参数${
index_01}:是标签中的索引的值;... ${
index}是元素索引:当定位是一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s select from list by index @{
el}[${
index}] ${
index_01}下拉框label[Arguments] ${
locator} ${
label} ${
index}=0[Documentation] 使用索引值选择列表下拉框;... 参数${
locator}:是定位 方式;... 参数${
label}:是标签中的文本值;... ${
index}是元素索引:当定位是一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Select From List By Label @{
el}[${
index}] ${
label}非标准下拉框[Arguments] ${
locator} ${
text} ${
index}=0[Documentation] 使用标签值选择列表下拉框;... 参数${
locator}:是定位 方式;... 参数${
text}:是标签li中的文本值;... ${
index}是元素索引:当li中的文本不唯一时候使用索引值;@{
el} 等待元素出现 ${
locator} 0 #因为第一个定位参数不能默认值,所以只能传入唯一定位BuiltIn.Wait Until Keyword Succeeds 30 s 2 s click element @{
el}[0]${
label} BuiltIn.Set Variable li${
locator} evaluate 'xpath://{}[contains(string(),"${text}")]'.format("${label}")@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s click element @{
el}[0]非标准下拉框js[Arguments] ${
locator} ${
text} ${
index}=0[Documentation] 使用标签值选择列表下拉框;... 参数${
locator}:是定位 方式;... 参数${
text}:是标签li中的文本值;... ${
index}是元素索引:当li中的文本不唯一时候使用索引值;@{
el} 等待元素出现 ${
locator} 0 #因为第一个定位参数不能默认值,所以只能传入唯一定位${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[0] id_01_${
name} #给下拉框标签添加idBuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelector('#id_01_${name}').click()${
label} BuiltIn.Set Variable li${
locator} evaluate 'xpath://{}[contains(string(),"${text}")]'.format("${label}")@{
el} 等待元素出现 ${
locator} ${
index}Assign Id To Element @{
el}[${
index}] id_02_${
name} #给li标签添加idBuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelector('#id_02_${name}').click()得到文本[Arguments] ${
locator} ${
index}=0[Documentation] 得到页面元素的文本;... 参数${
locator}是元素的定位@{
el} 等待元素出现 ${
locator} ${
index}: FOR ${
i} IN RANGE 50\ ${
text} get text @{
el}[${
index}]\ ${
msg} Run Keyword And Ignore Error BuiltIn.Should Not Be Empty ${
text}\ Exit For Loop If "${msg[0]}" == "PASS"RUN KEYWORD IF "${msg[0]}" == "PASS" set variable ${
True}... ELSE IF "${msg[0]}" == "FAIL" BuiltIn.Should Not Be Empty ${
text}[Return] ${
text}得到输入框文本[Arguments] ${
locator} ${
index}=0[Documentation] 得到页面元素的文本;... 参数${
locator}是元素的定位@{
el} 等待元素出现 ${
locator} ${
index}: FOR ${
i} IN RANGE 50\ ${
text} Get Value @{
el}[${
index}]\ ${
msg} Run Keyword And Ignore Error BuiltIn.Should Not Be Empty ${
text}\ Exit For Loop If "${msg[0]}" == "PASS"RUN KEYWORD IF "${msg[0]}" == "PASS" set variable ${
True}... ELSE IF "${msg[0]}" == "FAIL" BuiltIn.Should Not Be Empty ${
text}[Return] ${
text}移动滑块[Arguments] ${
locator} ${
index}=0[Documentation] 移动验证滑块。... 参数${
locator}:是定位 方式 例如:id=kw... ${
index}是元素索引:当定位是一组元素时候使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Drag And Drop By Offset @{
el}[${
index}] 10000 0jq点击[Arguments] ${
locator} ${
index}=0[Documentation] 使用jquery进行点击... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript $('#id_${name}').eq(${
index}).click()jq点击文本[Arguments] ${
label} ${
text} ${
index}=0[Documentation] 使用标签之间的文本来点击元素... ${
label}:是元素便签的名字,例如:a,span,div等... ${
text} :是元素标签之间的文本... ${
index}:如果得到的是多个元素,输入所需元素的索引${
locator} evaluate 'jquery:{}:contains("${text}")'.format("${label}")@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript $('#id_${name}').click()jq双击[Arguments] ${
locator} ${
index}=0[Documentation] 使用jquery点击... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript $('#id_${name}').eq(${
index}).dblclick()jq输入[Arguments] ${
locator} ${
text} ${
index}=0[Documentation] 使用jquery输入文本... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;... 参数${
text}:是要输入的文本@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript $('#id_${name}').eq(${
index}).val('${text}')js点击[Arguments] ${
locator} ${
index}=0[Documentation] 使用js点击;... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelectorAll('#id_${name}')[${
index}].click()js点击文本[Arguments] ${
label} ${
text} ${
index}=0[Documentation] 使用标签之间的文本来点击元素... ${
label}:是元素标签的名字,例如:a,span,div等... ${
text} :是元素标签之间的文本... ${
index}:如果得到的是多个元素,输入所需元素的索引${
locator} evaluate 'xpath://{}[contains(string(),"${text}")]'.format("${label}")@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelector('#id_${name}').click()js输入[Arguments] ${
locator} ${
text} ${
index}=0[Documentation] js输入文本... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;... 参数${
text}:是输入的文本;等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelectorAll('#id_${name}')[${
index}].value='${text}'js得到文本[Arguments] ${
label} ${
text} ${
index}=0[Documentation] 使用标签之间的文本来得到所有文本... ${
label}:是元素便签的名字,例如:a,span,div等... ${
text} :是元素标签之间的文本... ${
index}:如果得到的是多个元素,输入所需元素的索引${
locator} evaluate 'xpath://{}[contains(text(),"${text}")]'.format("${label}")@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}: FOR ${
i} IN RANGE 50\ ${
text} execute javascript return document.querySelector('#id_${name}').innerText\ ${
msg} Run Keyword And Ignore Error BuiltIn.Should Not Be Empty ${
text}\ Exit For Loop If "${msg[0]}" == "PASS"RUN KEYWORD IF "${msg[0]}" == "PASS" set variable ${
True}... ELSE IF "${msg[0]}" == "FAIL" BuiltIn.Should Not Be Empty ${
text}[Return] ${
text}js上传[Arguments] ${
file_path} ${
index}=0[Documentation] js上传文件... 参数${
file_path} :是要上传文件的地址包括后缀名称... 参数${
index}:是索引,当得到一组元素时候使用;@{
el} 等待元素出现 css:[type="file"] ${
index}execute javascript document.querySelectorAll('[type="file"]')[${
index}].style="display: true"execute javascript document.querySelectorAll('[type="file"]')[${
index}].style="display: none;"BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Choose File @{
el}[${
index}] ${
file_path}一般上传[Arguments] ${
locator} ${
file_path} ${
index}=0[Documentation] 1、参数${
locator}:是上传框的定位... 2、参数${
file_path}:是要上传文件的路径... 3、参数${
index}是元素索引,当得到一组元素进行使用@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s Choose File @{
el}[${
index}] ${
file_path}div滚动条[Arguments] ${
locator} ${
number} ${
index}=0[Documentation] 默认上下移动div内嵌式hi滚动条;... js定位是使用css定位... 参数${
locator}:是定位;... 参数${
index}:是索引,当得到一组元素时候使用;... 参数${
number}:是滚动的位置 ,输入的值,例如:50;等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelectorAll('#id_${name} ')[${
index}].scrollTop=${
number}div滚动条left[Arguments] ${
locator} ${
number} ${
index}=0[Documentation] 默认左右移动div内嵌式hi滚动条;... 参数${
locator}:是定位;... 参数${
number}:是滚动的位置 ,输入的值,例如:50;... 参数${
index}:是索引,当得到一组元素时候使用;等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s execute javascript document.querySelectorAll('#id_${name}')[${
index}].scrollLeft=${
number}滚动条[Arguments] ${
number}[Documentation] 针对整个页面的滚动条;... 参数${
number}:是移动的位置,输入数字,例如:500execute javascript document.documentElement.scrollTop=${
number}打开新页面[Arguments] ${
url}[Documentation] 打开新的网址,参数${
url} :是网址execute javascript window.open('${url}')切换frame[Arguments] ${
locator} ${
index}=0[Documentation] 切换到frame框,参数${
locator}:是定位方式;... 如果有id和name的话直接写: 两个属性的值即可;... 例如id=kw,name=su,直接写 kw或su即可@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s select frame @{
el}[${
index}]返回frame[Documentation] 返回主frameUnselect Frame切换窗口[Arguments] ${
locator}[Documentation] 跳转到新窗口... ${
locator}是定位策略:... 1、使用main关键字跳转到主页面:main... 2、使用标题title切换,直接输入网页标题即可:百度... 3、使用网址url切换,直接输入网页网址即可:https://www.baidu.com/@{
msg} create list [1,2,3]: FOR ${
i} IN RANGE 50\ @{
h} Get Window Handles\ ${
len} 得到长度 ${
h}\ Exit For Loop If ${
len} >= 2: FOR ${
i} IN @{
h}\ select window ${
i}\ ${
title} Get Title\ ${
url} Get Location\ @{
msg_2} create list ${
i} ${
title} ${
url}\ Append To List ${
msg} ${
msg_2}#log ${
msg}: FOR ${
i} IN @{
msg}\ 窗口循环 ${
i} ${
locator}RUN KEYWORD IF "${locator}" == "main" select window main窗口循环[Arguments] ${
list_01} ${
locator}: FOR ${
j} IN RANGE 3\ #log ${
j}\ RUN KEYWORD IF "${locator}" in "${list_01[${j}]}" select window ${
list_01[0]}关闭窗口close window截图[Arguments] ${
addr}=default${
time} evaluate time.strftime('%Y.%m.%d.%H.%M.%S') time${
addr_first} evaluate [str(pathlib2.Path('${CURDIR}').parent/'screenshot') if '${addr}' == 'default' else str(pathlib2.Path('${CURDIR}').parent/'screenshot/${addr}')] pathlib2Selenium2Library.Capture Page Screenshot ${
addr_first[0]}/${
time}.png回车[Arguments] ${
locator} ${
index}=0@{
el} 等待元素出现 ${
locator} ${
index}BuiltIn.Wait Until Keyword Succeeds 30 s 2 s press key @{
el}[${
index}] \\13弹框确定#点击弹框中的确定${
msg} Handle Alert timeout=30 s[Return] ${
msg}弹框取消#点击弹框中的取消${
msg} Handle Alert action=DISMISS timeout=30 s[Return] ${
msg}包含检查点[Arguments] ${
actual} ${
expect}[Documentation] ${
actual}是实际结果;... ${
expect}是预期结果;log ${
actual.replace('\n',',')} #打印实际结果log ${
expect} #打印预期结果Should Not Be Empty ${
actual} get value is emptyshould contain ${
expect} ${
actual.replace('\n',',')} msg=错误,预期结果和实际 结果不相同得到长度[Arguments] ${
x}[Documentation] 得到字符串的长度,并返回;... 参数使用${
}的方式;${
y} Get Length ${
x}[Return] ${
y}得到属性[Arguments] ${
locator} ${
name} ${
index}=0[Documentation] 参数${
locator}:是定位 方式,例如:id=kw;... 参数${
name}:是要得到的属性名称;... ${
index}是元素索引:当定位是一组元素时候使用;@{
el} 等待元素出现 ${
locator} ${
index}Set Focus To Element @{
el}[${
index}]${
atrr} Selenium2Library.Get Element Attribute @{
el}[${
index}] ${
name}[Return] ${
atrr}连接字符串[Arguments] ${
str1} ${
str2}[Documentation] 连接字符串,输入连个参数,返回一串字符${
text} Catenate SEPARATOR= ${
str1} ${
str2}[Return] ${
text}rf输入时间[Arguments] ${
locator} ${
number}[Documentation] \#给input标签输入日期 参数${
locator} 是:定位方式 参数${
number}:是给当前时间 加或减少的天数 #增加3天:输入数字3即可 减少3天:输入-3即可${
t1} get current date${
t2} add time to date ${
t1} ${
number}dayswait until page contains element ${
locator} 30 page not contains elementSet Focus To Element ${
locator}assign id to element ${
locator} ${
t1}execute javascript window.document.getElementById('${t1}').value='${t2[0:10]}'#给input标签输入日期 参数${
locator} 是:定位方式 参数${
number}:是给当前时间 加或减少的天数#增加3天:输入数字3即可 减少3天:输入-3即可py输入时间[Arguments] ${
locator} ${
y} ${
z} ${
d}${
t1} evaluate int(${
d})${
t2} Date Weekend ${
y} ${
z} ${
t1}wait until page contains element ${
locator} 30 page not contains element${
t3} get current dateassign id to element ${
locator} ${
t3}execute javascript window.document.getElementById('${t3}').value='${t2}'#给input标签输入日期 参数${
x}是定位方式 参数${
y}是:是否判断周末 判断输入yes,不判断输入no ${
d}:增减的天数#${
z},增加日期输入+ 减少日期输入- 参数${
d}是要减少或增加的天数py输入礼拜四[Arguments] ${
locator}${
t1} Date Thursdywait until page contains element ${
locator} 30 page not contains element${
t2} get current dateassign id to element ${
locator} ${
t2}execute javascript window.document.getElementById('${t2}').value='${t1}'#参数${
locator}是输入框的 定位方式读取excel数据[Arguments] ${
excel_name} ${
index}=0[Documentation] 读取excel的数据,参数${
excel_name} 为:excel的名称;... 参数 ${
index}=0:excel工作表索引,默认是第一个工作表;... 读取出来的数据默认是一个二维列表${
addr} Evaluate str(pathlib2.Path('${CURDIR}').parent/'data/${excel_name}.xlsx') pathlib2@{
z} Read Excel Data ${
addr}Set Global Variable ${
data} ${
z[${
index}]}[Return] @{
z[${
index}]}解压文件[Arguments] ${
x} ${
y}evaluate os.system("WinRAR x ${x} ${y}") os得到当前网址${
url} Get Location[Return] ${
url}新会话[Arguments] ${
host}create session api ${
host}关闭所有会话delete all sessions入参数据转换[Arguments] ${
message}[Documentation] 输入入参数据,将数据装换成字典... 输入格式为:page=1,Size=4... 返回一个json数据${
params} Convert Dict ${
message}[Return] ${
params}json转换[Arguments] ${
dict}[Documentation] 输入一组数据装换成json格式,例子:{
'name': False, 'age': 26, 'aa': True, 'bb': None, 'cc': 'jksdfnksnk', 'dd': '狮子座'}${
x} evaluate ${
dict}${
json} evaluate json.dumps(${
x},indent=4,ensure_ascii=False) json[Return] ${
json}表格得到数据[Arguments] ${
locator} ${
row} ${
column} ${
index}=0@{
el} 等待元素出现 ${
locator} ${
index}${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] id_${
name}wait until page contains element css:#id_${
name} tr:first-child td 30Comment Wait Until Element Is Visible css:#id_${
name} tr:first-child td 30: FOR ${
i} IN RANGE 50\ ${
msg} Run Keyword And Ignore Error Get Table Cell @{
el}[${
index}] ${
row} ${
column}\ Exit For Loop If "${msg[0]}" == "PASS"${
text} RUN KEYWORD IF "${msg[0]}" == "PASS" Get Table Cell @{
el}[${
index}] ${
row} ${
column}... ELSE IF "${msg[0]}" == "FAIL" Get Table Cell @{
el}[${
index}] ${
row} ${
column}BuiltIn.Should Not Be Empty ${
text}[Return] ${
text}表格得到大小和位置[Arguments] ${
locator} ${
text} ${
index}=0@{
el} 等待元素出现 ${
locator} ${
index}Comment ${
name} evaluate str(time.time()).replace('.','') timeAssign Id To Element @{
el}[${
index}] table_demo_idwait until page contains element css:#table_demo_id tbody tr:first-child td 30${
row} Execute Javascript return document.querySelectorAll('#table_demo_id \ tr').length${
col} Execute Javascript return document.querySelectorAll('#table_demo_id \ tbody tr:first-child td').length@{
msg} create list Table is a : \ ${
row} row ${
col} col@{
demo_01} create list Your find text in Cell :BuiltIn.Set Global Variable ${
demo} ${
demo_01}: FOR ${
i} IN RANGE 1 ${
row}+1\ Run Keyword And Ignore Error 表格数据 @{
el}[${
index}] ${
i} ${
col} ${
text}Append To List ${
msg} ${
demo}log ${
msg}[Return] ${
msg}表格数据[Arguments] ${
locator} ${
i} ${
col} ${
text}: FOR ${
j} IN RANGE 1 ${
col}+1\ ${
msg} Selenium2Library . Get Table Cell ${
locator} ${
i} ${
j}\ ${
x} BuiltIn.Evaluate [${
i},${
j}]\ run keyword if '''${text}''' in '''${msg}''' Append To List ${
demo} ${
x}表格输入文本[Arguments] ${
row} ${
col} ${
text}输入文本 css:#table_demo_id tbody tr:nth-child(${
row}) > td:nth-child(${
col}) input ${
text} #给固定的表格输入数据