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()
复制代码

 

posted @   爱语默  阅读(626)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示