rf对时间控件的操作

1、如何去掉readonly属性

前端对于时间控件的设置,有时是为了限制用户不能进行手动输入方式进行选择时间,避免在手动输入的时候超限或者输入格式不正确,导致一些不必要的验证麻烦,这是前端开发工程师就会在前端代码中加入readonly属性,但是对于手动测试来说的话,这种只能进行点击控件进行选择时间,而对于自动测试来说,这样的方式可能是行不通,因为这个需要认证时间控件的有效性很多个选择,自动化变得更加麻烦, 是不是就没有办法进行了呢?答案是否点的,例如:

那该怎么进行设置呢?这个是前人踩过的坑,后来推荐去看robotframework论坛中一篇文档,正好能对该方式正式解决,第一需要进行设置临时id,第二使用临时id进行重新赋值,第三进行删除readonly属性

1 这是个不可以输入的日历控件,下面讲解如何变可输入
2 1.通过Assign Id To Element 关键字配临时ID。
3 例如:Assign Id To Element | loactor  | 临时ID
4 2.用Execute JavaScript 方法:
5 window.document.getElementById(‘临时ID‘).value=‘2016-12-19‘
6
7 经过实践:下面直接去除readonly属性再输入OK
8 window.document.getElementById(‘临时ID‘).removeAttribute("readonly")
 1 [Setup]    登录
 2     询价打开模块公共方法
 3     询价高级查询按钮
 4     Comment    Click Element    xpath=.//*[@id=‘CreatedDate1‘]
 5     sleep    5
 6     Comment    Unselect Frame
 7     Comment    Select Frame    id=InquiryAndProject_Residential
 8     Comment    ${a}    Get Text    /html/body/div[9]/div[1]/div[3]
 9     Comment    log    ${a}
10     Comment    Input Text    xpath=//div[@class=‘date-picker-wrapper no-shortcuts no-gap two-months‘ and contains(@style,‘display: block‘)]//div[@class=‘normal-top‘]/b[1]    2017-01-20
11     Comment    Input Text    xpath=.//*[@id=‘CreatedDate1‘]    2017-01-20 至 2017-02-18
12     Assign Id To Element    xpath=.//*[@id=‘CreatedDate1‘]    new_time
13     Assign Id To Element    xpath=.//*[@id=‘CreatedDate1From‘]    new_time1
14     Assign Id To Element    xpath=.//*[@id=‘CreatedDate1To‘]    new_time2
15     Execute JavaScript    window.document.getElementById(‘new_time‘).value=‘2017-01-15 至 2017-01-20‘
16     Execute JavaScript    window.document.getElementById(‘new_time1‘).value=‘2017-01-15‘
17     Execute JavaScript    window.document.getElementById(‘new_time1‘).value=‘2017-01-15‘
18     Execute JavaScript    window.document.getElementById(‘new_time2‘).value=‘2017-01-20‘
19     Execute JavaScript    window.document.getElementById(‘new_time‘).removeAttribute("readonly")
20     询价查询按钮

2、进行自动化手动选择控件

 1 按盖章时间查询
 2     Set Selenium Speed    0.5
 3     登录
 4     点击我的项目
 5     点击项目盖章
 6     Select Frame    id=ProjectAllot_Seal
 7     等待列表加载完成    1
 8     点击已盖章
 9     等待列表加载完成    2
10     Comment    按输入时间查询    2015-5-28    2019-6-9
11     ${start_date}    Set Variable    2016-12-1
12     ${end_date}    Set Variable    2017-1-10
13     按单个时间查询    ${start_date}    //td[@id=‘sealTime‘]/span/span
14     按单个时间查询    ${end_date}    //td[@id=‘sealTime2‘]/span/span
15     ${min_stamp}    Get Stamp    ${start_date}
16     ${max_stamp}    Get Stamp    ${end_date}
17     点击查询    2
18     ${no}    get总页数    2
19     ${no}    Run Keyword If    ${no}<10    Set Variable    ${no}
20     ...    ELSE    Set Variable    10
21     : FOR    ${i}    IN RANGE    10
22     \    Wait Until Element Is Visible    //div[@id=‘tabs‘]/div[2]/div[2]//div[@class=‘datagrid-view2‘]/div[2]//tbody/tr[${i+1}]    10
23     \    ${result}    Get Text    //div[@id=‘tabs‘]/div[2]/div[2]//div[@class=‘datagrid-view2‘]/div[2]//tbody/tr[${i+1}]/td[8]/div
24     \    ${list}    Evaluate    ‘${result}‘.split(‘ ‘)
25     \    ${date}    Evaluate    ${list}[0]
26     \    ${arr}    Evaluate    ‘${date}‘.split(‘/‘)
27     \    ${current_date}    Evaluate    ‘-‘.join(${arr})
28     \    ${current_stamp}    Get Stamp    ${current_date}
29     \    Should Be True    ${current_stamp}>=${min_stamp} and ${current_stamp}<=${max_stamp}    已盖章页面按照盖章时间查询不正确
 1 按单个时间查询
 2     [Arguments]    ${input_date}    ${DropBtn_xpath}
 3     [Documentation]    输入:
 4     ...
 5     ...    1、${input_date}:输入的日期参数,格式为2016-2-3 ,个位数不补0,不能写为2016-02-03
 6     ...
 7     ...    2、${dropBtn_xpath}:日期控件的下拉按钮xpath路径
 8     Set Selenium Speed    0.5
 9     ${prevAndAfter}    Set Variable    0    #0表示向前翻,1表示向后翻
10     ${base_path}    Set Variable    //div[@class=‘panel combo-p‘ and contains(@style,‘display: block‘)]
11     ${dict}    Create Dictionary    1=一月    2=二月    3=三月    4=四月    5=五月
12     ...    6=六月    7=七月    8=八月    9=九月    10=十月    11=十一月
13     ...    12=十二月
14     ${prev_month}    Set Variable    ${base_path}//div[contains(@class,‘calendar-prevmonth‘)]    #点击上一个月
15     ${prev_year}    Set Variable    ${base_path}//div[contains(@class,‘calendar-prevyear‘)]
16     ${next_year}    Set Variable    ${base_path}//div[contains(@class,‘calendar-nextyear‘)]
17     ${next_month}    Set Variable    ${base_path}//div[contains(@class,‘calendar-nextmonth‘)]
18     ${input_date}    Set Variable    ‘${input_date}‘.split(‘-‘)
19     ${start_abbr}    Evaluate    ‘,‘.join(${input_date})    #匹配要点击开始哪天的abbr属性
20     ${s_year}    Evaluate    ${input_date}[0]
21     ${s_month}    Evaluate    ${input_date}[1]
22     ${s_day}    Evaluate    ${input_date}[2]
23     ${startDayPath}    Set Variable    ${base_path}//td[text()=${s_day} and @abbr=‘${start_abbr}‘]    #需要点击的开始day
24     ${s_year}    Evaluate    int(‘${s_year}‘)
25     ${s_month}    Evaluate    int(‘${s_month}‘)
26     ${s_day}    Evaluate    int(‘${s_day}‘)
27     Click Element    ${DropBtn_xpath}    #点击开始时间下拉按钮
28     ${current_ym}    Set Variable    ${base_path}//div[contains(@class,‘calendar-title‘)]/span    #当前年月
29     ${yearAndMonthStr}    Get Text    ${current_ym}
30     ${yearAndMonthArr}    Evaluate    u‘${yearAndMonthStr}‘.split(‘ ‘)
31     ${current_year}    Evaluate    ${yearAndMonthArr}[1]
32     ${current_month}    Evaluate    ${yearAndMonthArr}[0]
33     ${year_no}    Evaluate    int(‘${current_year}‘)    #当前年份
34     ${keys}    Get Dictionary Keys    ${dict}
35     ${values}    Get Dictionary Values    ${dict}
36     ${v_len}    Evaluate    len(${values})
37     : FOR    ${i}    IN RANGE    ${v_len}
38     \    ${temp}    Evaluate    ${values}[${i}]
39     \    ${month_no}    Run Keyword If    ‘${current_month}‘==‘${temp}‘    Evaluate    ${keys}[${i}]
40     \    Exit For Loop If    ‘${current_month}‘==‘${temp}‘
41     ${month_no}    Evaluate    int(‘${month_no}‘)    #当前月份
42     #确定要翻几年
43     ${yearTurnCount}    Evaluate    ${s_year}-${year_no}
44     ${prevAndAfter1}    Run Keyword If    ${yearTurnCount}>0    Set Variable    1
45     ...    ELSE    Set Variable    0
46     ${yearTurnCount}    Evaluate    abs(${yearTurnCount})
47     #确定要翻几月
48     ${monthTurnCount}    Evaluate    ${s_month}-${month_no}
49     ${prevAndAfter2}    Run Keyword If    ${monthTurnCount}>0    Set Variable    1
50     ...    ELSE    Set Variable    0
51     ${monthTurnCount}    Evaluate    abs(${monthTurnCount})
52     : FOR    ${i}    IN RANGE    ${yearTurnCount}
53     \    Run Keyword If    ${prevAndAfter1}==0    Click Element    ${prev_year}
54     \    ...    ELSE    Click Element    ${next_year}
55     : FOR    ${i}    IN RANGE    ${monthTurnCount}
56     \    Run Keyword If    ${prevAndAfter2}==0    Click Element    ${prev_month}
57     \    ...    ELSE    Click Element    ${next_month}
58     Click Element    ${startDayPath}
1 清空选择的日期
2     [Arguments]    ${dropBtn_xpath}
3     [Documentation]    输入:
4     ...    1、${dropBtn_xpath}:日期控件的下拉按钮xpath路径
5     Click Element    ${dropBtn_xpath}
6     ${base_path}    Set Variable    //div[@class=‘panel combo-p‘ and contains(@style,‘display: block‘)]
7     Click Element    ${base_path}//a[text()=‘清空‘]
时间: 2024-10-18 05:43:45

rf对时间控件的操作的相关文章

RobotFramework教程使用笔记——时间控件的相关操作

在web测试过程中,我们可能会遇到时间控件,有的是支持直接输入的,有的为了保证输入时间格式的一致性是只支持点击选择的,那么这个时候如何用robotframework来操作呢? 看下面这个例子: 这个是只支持点击选择的,对于这种控件有以下解决方法: 1.直接定位时间点,使用点击选择时间. 可以看到时间控件里的每个时间都是可以定位到的,所以可以直接定位一个时间点完成操作.   2.使用js来操作显示框,使之变成可输入的.      先使用Assign Id To Element,给输入框赋值个临时i

访问调度控制 时间控件

Visulalization Voronoi in OpenSceneGraph [email protected] Abstract. In mathematics a Voronoi diagram is a way of dividing space into a number of regions. A set of points, called seeds, sites, or generators is specified beforehand and for each seed t

1、CRM2011编程实战——清空指定页签下面的所有选项,并对页签下面的指定控件进行操作

需求:当页面加载时,"呼叫编号"保持不变,"任务号"自动更新,"接报时间"和"发生日期"自动设置为当天日期和时间,其它选项全部恢复为初始状态. 字段说明: 控件名称 值 控件名称 值 控件名称 值 反馈单登录 tab_4 任务号 hxcs_ftaskcode 接报时间 hxcs_fdatetimeofcasehappended 发生日期 hxcs_fdatetimeofcasehappended 呼叫编号 hxcs_fcall

C# 时间控件 竖直进度条 饼图显示 按钮基础控件库

Prepare 本文将使用一个NuGet公开的组件来实现一些特殊的控件显示,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装: Install-Package HslCommunication NuGet安装教程  http://www.cnblogs.com/dathlin/p/7705014.html 技术支持QQ群:592132877 (组件的版本更新细节也将第一时间在群里发布) Summary

vue小荔枝,时间控件,动态按月份增减。

依赖框架有jq,bootstrap3.0,vue2.0; 自封装(搬运)时间控件,bootstrap-datetimepicker.资源下载:看这里 需求: 默认本地时间,相隔一个月 四个选项:1一个月,一个季度,半年,一年. 如果结束日期不变,那么默认递增即可,如果结束日期改变了,以变更的日期递增月份. html结构: <div id="app"> <div class="col-md-5 form-inline"> <div cla

jquery-ui日期时间控件实现

日期控件和时间控件为独立控件,日期时间控件要同一时候导入日期控件和时间控件的js,然后在日期控件加入时间控件显示參数,没有导入时间控件js.日期控件函数设置的时间控件參将包错 日期控件官网网址:http://jqueryui.com/ 日期控件js:jquery-ui.js 相应函数及默认属性设置:function Datepicker() 时间控件官网网址:http://plugins.jquery.com/jt.timepicker/ 时间控件js:jquery-ui-timepicker-

从零开始学_JavaScript_系列(九)——dojo(2)(AJAX、时间控件、鼠标事件、样式修改、事件移除、消息发布订阅)

(21)和(22)写的不好,跳过. (23)AJAX异步加载 插件:dojo/request 参数:request 语法(get): request.get(URL).then(成功回调函数,失败回调函数); 第一个回调函数是成功的,参数用response:(也可以用其他的) 第二个回调函数是失败的,参数用error:(也可以用其他的) 注: ①读取本地比较简单,直接填写本地的url即可: ②如果读取服务器端(比如数据库),那么需要相应的支持,例如python脚本等(我自己目前对python.和

My97DatePicker时间控件

之前一直使用easyui控件无法实现只显示yyyy年MM月格式或者显示yyyyMM格式.相比My97DatePicker时间控件更为强大些. 只要在页面引用如下脚本,WdatePicker.js内部会引用其它js. <script type="text/javascript" src="<%=root%>/Common/My97DatePicker/WdatePicker.js"></script> 然后在input中编写oncl

DatePicker日期与时间控件

DatePicker日期与时间控件 一.简介 二.方法 三.代码实例 四.收获