先看下需求,这个报表中有个时长,需要对昨日和前日的时长进行比较,我们获取到的元素是例如“9分43秒”这样的格式

1.首先要讲中文中的分和秒分别提取出来

提取python代码如下:

import re
str = '11分1秒'
list = re.findall(r'\d+', str)
print(list)

执行结果['11', '1']

可以看到,此段代码可以讲分、秒组装到一个list中

2.Python按照索引访问list就可以活得分和秒的具体值,进而计算出总共的秒数

import re
str = '11分1秒'
list = re.findall(r'\d+', str)
print(list[0])
print(list[1])

s=list[0]*60+list[1]

好了,代码知道怎么写了,那么我们把它用到工具里面去,这里有两种方法

第一种:直接在工具中使用python代码

1.首先引入re

Library re

2.截取分和秒

#提取分、秒

${Yesterday_Minutes}   Evaluate re.findall(r'\\d+', '${Yesterday_Averagevisit_Time}')[0] re
${Yesterday_Seconds} Evaluate re.findall(r'\\d+', '${Yesterday_Averagevisit_Time}')[1] re

#转换成秒

${Seconds_1}    Evaluate    ${Yesterday_Minutes}*60+${Yesterday_Seconds}

注意此处需要用\\可以避免转义,一个\的时候,在使用该工具时被转义了,会出现如下错误

正确的写法

整体代码:

*** Settings ***
Library Selenium2Library
Library collections
Library re

*** Test Cases ***
001-浙江新闻分析图表分析结果
Open Browser http://10.200.70.207/#/home chrome
Maximize Browser Window
Input Text xpath=//*[@id="loginKey"] wsjun
Input Text xpath=//*[@id="password"] xcep7879
Click Button xpath=//*[@id="submitLoginBtn"]
Sleep 2
Click Element xpath=//*[@id="app"]/div[1]/div[2]/ul/li[2]
Sleep 2
Click Element xpath=//*[@id="app"]/div[2]/div/div[1]/div/div/div[1]/div/div/div[1]
Sleep 2
Input Text xpath=//*[@id="app"]/div[2]/div/div[1]/div/div/div[1]/div/div/div[2]/input 浙江新闻
Sleep 2
Click Element xpath=//*[@id="app"]/div[2]/div/div[1]/div/div/div[1]/div/div/div[2]/div/span/div[1]/ul/li/div/p[1]
Sleep 2
#点击访问分析
Click Element xpath=//*[@id="app"]/div[2]/div/div[1]/div/div/div[2]/ul/div[6]/li/div
Sleep 2
#点击页面分析
Click Element xpath=//*[@id="app"]/div[2]/div/div[1]/div/div/div[2]/ul/div[6]/li/ul/li/ul/li[1]/a
sleep 2
#点击分析图表
Click Element xpath=//*[@id="app"]/div[2]/div/div[2]/div/div/div/div/div[4]/div/div[2]/div[2]/div[1]/div/div[1]/div/div[2]
Wait Until Element Is Visible xpath=//*[@id="app"]/div[2]/div/div[2]/div/div/div/div/div[4]/div/div[2]/div[1]/div/div/button
sleep 5
#鼠标点击昨日坐标位置
Click Element At Coordinates xpath=//*[@id="lineandbarcharts"]/div[1]/canvas 400 50
sleep 5
#获取昨日浏览次数、用户数、次均访问时长
${Yesterday_Browse_Count} get Text xpath=//*[@id="lineandbarcharts"]/div[2]/div[1]/div
sleep 2
${Yesterday_User_Count} get Text xpath=//*[@id="lineandbarcharts"]/div[2]/div[2]/div
sleep 2
${Yesterday_Averagevisit_Time} get Text xpath=//*[@id="lineandbarcharts"]/div[2]/div[3]/div
sleep 5
#鼠标点击前日坐标位置
Click Element At Coordinates xpath=//*[@id="lineandbarcharts"]/div[1]/canvas 250 50
sleep 5
#获取前日日浏览次数、用户数、次均访问时长
${Last_Browse_Count} get Text xpath=//*[@id="lineandbarcharts"]/div[2]/div[1]/div
sleep 2
${Last_User_Count} get Text xpath=//*[@id="lineandbarcharts"]/div[2]/div[2]/div
sleep 2
${Last_Averagevisit_Time} get Text xpath=//*[@id="lineandbarcharts"]/div[2]/div[3]/div
sleep 2
#昨日指标和前日指标对比
#浏览次数对比
${Browse_Count_ratio} Evaluate ${Yesterday_Browse_Count}/${Last_Browse_Count}
${Browse_Count_ratio_float} Evaluate float(${Browse_Count_ratio} )
Should Be True 0.7<${Browse_Count_ratio_float}<1.3
sleep 2
#用户数对比
${User_Count_ratio} Evaluate ${Yesterday_User_Count}/${Last_User_Count}
${User_Count_ratio_float} Evaluate float(${User_Count_ratio} )
Should Be True 0.7<${User_Count_ratio_float}<1.3
sleep 2
#次均访问拆分成分、秒
${Yesterday_Minutes} Evaluate re.findall(r'\\d+', '${Yesterday_Averagevisit_Time}')[0] re
${Yesterday_Seconds} Evaluate re.findall(r'\\d+', '${Yesterday_Averagevisit_Time}')[1] re
${Last_Minutes} Evaluate re.findall(r'\\d+', '${Last_Averagevisit_Time}')[0] re
${Last_Seconds} Evaluate re.findall(r'\\d+', '${Last_Averagevisit_Time}')[1] re
#时长统一转换成秒数
${Seconds_1} Evaluate ${Yesterday_Minutes}*60+${Yesterday_Seconds}
${Seconds_2} Evaluate ${Last_Minutes}*60+${Last_Seconds}
#次均访问时长对比
${Seconds_ratio} Evaluate ${Seconds_1}/${Seconds_2}
${Seconds_ratio_float} Evaluate float(${Seconds_ratio} )
Should Be True 0.7<${Seconds_ratio_float}<1.3

第二种是导入RobotFramework 自定义关键字(库文件)

RobotFramework 截取中文中的数字比较时长的更多相关文章

  1. FFMPEG中关于ts流的时长估计的实现(转)

    最近在做H.265 编码,原本只是做编码器的实现,但客户项目涉及到ts的封装,搞得我不得不配合了解点ts方面的东西.下面技术文档不错,转一下. ts流中的时间估计 我们知道ts流中是没有时间信息的,我 ...

  2. FFMPEG中关于ts流的时长估计的实现

    ts流中的时间估计 我们知道ts流中是没有时间信息的,我门来看看ffmpeg是怎么估计其duration的 方法1.通过pts来估计 static void estimate_timings_from ...

  3. PHP如何获取视频总时长与码率等信息

    利用PHP中的FFmpeg读取视频播放时长与码率等信息   function getVideoInfo($file) {    define('FFMPEG_PATH', '/usr/local/ff ...

  4. 如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误

    原文:如何解决FormView中实现DropDownList连动选择时出现 "Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的 ...

  5. SAP中数字计算时溢出捕获

    CLEAR:g_vol. CATCH SYSTEM-EXCEPTIONS arithmetic_errors = OTHERS = . g_vol = gwa_input-laeng * gwa_in ...

  6. 学习PHP中国际化地数字格式处理

    不知道大家有没有了解过,对于数字格式来说,西方国家会以三位为一个进位,使用逗号来分隔.比如,12345678,用标准的格式来表示的话就是 12,345,678 .不过我们中文其实并不会有这样的分隔符, ...

  7. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

  8. C/C++面试之算法系列--去除数组中的重复数字

    去除数组中的重复数字 Sailor_forever  sailing_9806@163.com 转载请注明 http://blog.csdn.net/sailor_8318/archive/2008/ ...

  9. MySQL中字符串与数字比较的坑

    公司项目代码中,某枚举字段数据库表中类型是char(1),在代码中,误以为是TINYINT,所以用数字筛选,后来发现结果不对.发现了一个现象,用数字0筛选会把所有的记录给筛选出来. 经过排查发现是在M ...

随机推荐

  1. Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)

    [1]缓存穿透与缓存雪崩 [1.1]缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的 ...

  2. 查找担保圈-step6-对被包含过的组进行清理,只保留未被包含过的组

    USE [test] GO /****** Object: StoredProcedure [dbo].[p04_get_groupno_cleared] Script Date: 2019/7/8 ...

  3. 牛客 40E 珂朵莉的数论题

    大意: 给定$x,y$, 求第$x$小的最小素因子为$y$的数, 若答案>1e9输出0. 若$y>=60$, 可以暴力筛出1e9/60以内的答案. 否则容斥+二分算出答案. #includ ...

  4. hype-v上centos7部署高可用kubernetes集群实践

    概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...

  5. 【Mybatis】Mapper接口的参数处理过程

    下面是一个简单的Mapper接口调用,首先同个session的getMapper方法获取Mapper的代理对象,然后通过代理对象去调用Mapper接口的方法 EmployeeMapper mapper ...

  6. Unity Button按钮延迟

    1.把下面脚本放到Editor文件夹下,这样脚本继承Button之后,新声明的public变量才能在Inspector面板显示出来. using System.Collections; using S ...

  7. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

    写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...

  8. python之输入一系列整数输出最大值

    在python学习中,我们经常会遇到:编写一个程序,输入若干整数或者是在一串字符中,输出最大值(数)的问题.那么在这里,我给出了几种常见的,也是几种比较常用的方法,希望能给大家的学习带来一定的帮助. ...

  9. MFC + XToolKit的使用 ( 亲自实践 )

    1. 变量声明: 在Dlg.h    的public下 CXTPButton m_Button2; 2. 变量交换并设置按钮风格: Dlg.cpp下 void CXT_VS2010Dlg::DoDat ...

  10. vue-loading图

    父组件给子组件src地址: columns(){ return [ {'title': '图片', 'key': 'img', render(h, {row}){ return h(LoadingIm ...