【发布时间】:2019-03-30 11:02:33
【问题描述】:
我附上了一张我正在使用的日历的图片。 我正在尝试选择 2018 年 1 月 1 日。但是,当我为 10 月(当前月份)以外的任何日期运行 xpath 时,它会输入 10 月的日期。因此,它选择了 2018 年 10 月 1 日,而不是 1 月 1 日。
这是我目前正在使用的代码
#Open Table
link2 = driver.find_element_by_xpath('/html/body/table[1]/tbody/tr[2]/td[2]/table/tbody/ tr/td[2]/table/tbody/tr/td/form/table/tbody/tr[4]/td[4]/a/img')
link2.click()
#Select Jan 1
link3 = driver.find_element_by_xpath('//*[@id="ds_calclass"]/table/tbody/tr[4]/td[2]')
link3.click()
我只是希望看看其他人是否有这个问题以及他们是如何解决这个问题的。
提前致谢!!
【问题讨论】:
-
您是否尝试将日期发送到文本输入字段而不是处理日历小部件?另外,您希望网络应用程序如何知道当您单击当月的第一天时,您实际上是指 1 月 1 日?您是否尝试点击
>更改月份? -
我有,但它甚至不允许我手动输入日期/文本。我可能会多次单击左箭头键并尝试以这种方式选择一月,但随后每个月都必须编辑我的代码。让我知道你的想法@Andersson
-
另外 - 我检查了 1 月 1 日,我认为这就足够了。当我检查 1 月 1 日时,它向我显示了这个 html "
1 我将尝试使用 index 而不是 xpath 并让您知道它是否有效。 @安德森 -
不,我认为您不应该在某处硬编码当前月份。第一个选项是获取当前月份的索引(我猜 HTML 中的所有 12 个月都表示为 12 个节点的列表......),只需减去月份索引之间的差异,您就可以获得需要执行的点击次数。您还可以使用
import datetime; datetime.datetime.today().month即时获取当前月份索引 -
嗨@Andersson 我找不到所有 12 个节点的列表。 HTML 似乎只允许我每个月单独检查。所以它显示如下:
然后 .. 。等等。我将如何选择比今天当前日期早 6 个月的日期?现在我正在尝试使用您的导入日期时间方法,但是我将如何减去 6 个月?在导入 relativedelta 之后,我会按照 date.today() - relativedelta(months=6) 的方式做一些事情吗?任何示例代码都会有所帮助。谢谢!!
标签: python selenium xpath drop-down-menu pycharm