selenium 进行web自动化时,对日期控件的处理
控件1:
控件2:
解决办法:使用js实现
//*[@for='saleChannelList']/../following-sibling::div[2]//input[@class='el-range-input'][1] 为元素定位,直接添加输入内容
js = f"""var bm = document.evaluate(\"//*[@for='saleChannelList']/../following-sibling::div[2]//input[@class='el-range-input'][1]\", document).iterateNext(); bm.value='{startDate}'""" self.driver.execute_script(js)
def selectTimeFromJs(self,ele,value,isClick=True): ''' 通过js去掉时间控件的readOnly 属性,直接输入时间,并点击空白处(必须要有这个操作,没有时,输入无效) :param ele: 时间选择框元素 :param value: 时间 :param isClick: True时需点击空白处 :return: ''' js = """ arguments[0].readOnly = false;# 去除只读属性 #arguments[0].value = arguments[1]; """ self.driver.execute_script("arguments[0].readOnly = false;",ele) ele.click() ele.clear() time.sleep(0.5) ele.send_keys(value) if isClick: # # 鼠标左键点击, 200为x坐标, 100为y坐标 ActionChains(self.driver).move_by_offset(100, 50).click().perform()