在做selenium自动化的时候遇到 时间搜索框查询(如下图)并比较查询结果是否在输入的时间之类。
首先,第一步要做的就是选择时间,并获取到所选时间的文本信息
如上图所示,获取到的时间搜索框并没有文本信息,如果直接用 .text 方法打印结果为空
所以采用get_attribute()的方法获取元素的属性,代码实现如下
def get_element_attribute(self, selector: str, value='value') -> str: """获取元素属性""" ele = self.find_element(selector) return ele.get_attribute(value)
selector: 元素定位信息
value:需要获取的属性,默认为value
获取到搜索时间属性后,我们打印结果为 2020/10/27 00:00:00 - 2020/11/26 00:00:00 ,类型为str
此时需要使用 split() 方法把结果拆分为单个日期并使用 datetime.datetime.strptime(date_string, format) 方法转换成日期类型,
date_string: 时间字符串
format: 传入的时间字符串的格式类型,
完整代码实现如下
def select_time(self): """时间查询""" self.get_high_class()[0].click() self.get_date().click() self.get_days30().click() self.get_date_confirm().click() time.sleep(0.5) #获取输入的时间并转换成date类型 timevalue = self.get_time_value() str_start_time = timevalue.split('-')[0].strip() str_end_time = timevalue.split('-')[1].strip() logging.info(timevalue) logging.info(str_start_time) logging.info(str_end_time) start_time = datetime.datetime.strptime(str_start_time, '%Y/%m/%d %H:%M:%S') end_time = datetime.datetime.strptime(str_end_time, '%Y/%m/%d %H:%M:%S') self.get_select()[0].click() time.sleep(2) time_text = self.get_date_text() for i in time_text: result_time = datetime.datetime.strptime(i.text, '%Y/%m/%d %H:%M:%S') if start_time >= result_time or end_time <= result_time: logging.error('----------时间查询异常,异常时间 %s ---------' % i.text) return False logging.info('----------时间查询测试成功---------') return True