鱼C论坛

 找回密码
 立即注册
查看: 2751|回复: 8

[已解决]selenium输入日期时的问题

[复制链接]
发表于 2023-2-18 13:01:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在使用selenium抓取数据时,使用的浏览器是Chrome,需要给定日期范围,如图,在输入年后,不会自动跳到月,导致无法完成日期的输入,尝试在其他电脑上运行程序,光标在输入“年”后,会自动跳到月,之后会跳到日,最后给定日期范围。

大神们帮忙看看,是浏览器设置问题,还是其他什么问题?两台电脑上运行的代码一样。

日期窗体.gif
最佳答案
2023-2-20 09:13:39
xialinren 发表于 2023-2-19 20:52
谢谢你的答复,对js不了解,我用的是下面这个code, StartDate和EndDate是变量,不是格固定的值,格式是Y ...

需要引号包裹,请注意 注释语句和非注释语句的区别
da="2023-06-06"
#js='document.getElementById("rq").value='+'"'+da+'"'
js='document.getElementById("rq").value='+da
drv.execute_script(js)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-18 13:06:02 | 显示全部楼层
在输入年后,不会自动跳到月,导致无法完成日期的输入,在输入年之后,需要按一个->方向键,光标才能跳到月份,输入月之后,再输入->才能跳到日,其他电脑没有这个问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-18 13:20:17 | 显示全部楼层
xialinren 发表于 2023-2-18 13:06
在输入年后,不会自动跳到月,导致无法完成日期的输入,在输入年之后,需要按一个->方向键,光标才能跳到月 ...

如果 click 等操作过于复杂的话,建议你用 selenium 执行 js 来修改他的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-19 20:52:10 | 显示全部楼层
isdkz 发表于 2023-2-18 13:20
如果 click 等操作过于复杂的话,建议你用 selenium 执行 js 来修改他的值

谢谢你的答复,对js不了解,我用的是下面这个code, StartDate和EndDate是变量,不是格固定的值,格式是YYYY-MM-DD,但是,还是不行,录入不进去,如果直接用js='document.getElementsByName("STARTDATE")[0].value = 2023-01-01' 这到可以,不知道是什么情况?

js='document.getElementsByName("STARTDATE")[0].value = '+StartDate
    driver.execute_script(js)
   
    js='document.getElementsByName("ENDDATE")[0].value = '+EndDate
    driver.execute_script(js)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 20:56:01 | 显示全部楼层
xialinren 发表于 2023-2-19 20:52
谢谢你的答复,对js不了解,我用的是下面这个code, StartDate和EndDate是变量,不是格固定的值,格式是Y ...

你的 StartDate 是怎么得来的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-19 21:13:50 | 显示全部楼层
isdkz 发表于 2023-2-19 20:56
你的 StartDate 是怎么得来的?

把日期放在excel中,让用户输入,比如:2023-01-01,我前面用print打印出来,显示是对的,而且是string格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 21:24:58 | 显示全部楼层
xialinren 发表于 2023-2-19 21:13
把日期放在excel中,让用户输入,比如:2023-01-01,我前面用print打印出来,显示是对的,而且是string格 ...

那不应该呀,既然都是一样的格式为什么一个可以一个不可以,是不是有个别的格式不对,比如你把表头也搞进去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 09:13:39 | 显示全部楼层    本楼为最佳答案   
xialinren 发表于 2023-2-19 20:52
谢谢你的答复,对js不了解,我用的是下面这个code, StartDate和EndDate是变量,不是格固定的值,格式是Y ...

需要引号包裹,请注意 注释语句和非注释语句的区别
da="2023-06-06"
#js='document.getElementById("rq").value='+'"'+da+'"'
js='document.getElementById("rq").value='+da
drv.execute_script(js)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 09:56:17 | 显示全部楼层
wp231957 发表于 2023-2-20 09:13
需要引号包裹,请注意 注释语句和非注释语句的区别

把语句改成:
    js='document.getElementsByName("STARTDATE")[0].value = '+'"'+StartDate+'"'
    driver.execute_script(js)

    js='document.getElementsByName("ENDDATE")[0].value = '+'"'+EndDate+'"'
    driver.execute_script(js)

运行程序,如预期,问题解决!

谢谢 wp231957和isdkz!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表