i有一个带有5列的HTML表。在第三列中是链接,第五列是日期。
现在,我想编写一个代码,该代码检查日期是否在接下来的4周内,如果是,请单击链接
这是我到目前为止所拥有的:
# Set the Date
start = time.strftime('%d-%m-%Y')
now = datetime.datetime.strptime(start, '%d-%m-%Y')
date_in_four_weeks = now + datetime.timedelta(days=28)
project_time = date_in_four_weeks - now
# Check the date and click on link
for i in range(project_time.days + 1):
print(now + timedelta(days=i))
time = driver.find_element_by_css_selector('css_selector')
if time <= project_time:
linkList = driver.find_elements_by_css_selector("css_selector")
for i in range(0,len(linkList)):
links = driver.find_elements_by_partial_link_text('SOLI')
links[i].click()
driver.get_screenshot_as_file("test.png")
else:
print "No Project found"
如果我运行代码,我会收到错误:
TypeError:无法将datetime.timedelta与WebElement进行比较
现在我想问一下是否有什么办法可以解决问题?
谢谢:)
您必须解决一些问题。
首先,您要与错误对象进行比较,正如错误指出的那样。这包括您引用的HTML元素的标签。您首先要提取文本。
然后,您需要解析此文本以将其转换为Python datetime
或date
对象。time
对象不会这样做,因为它仅存储时间,而不是日期。由于我不知道您的html日期是什么格式,我只会将您指向文档,以便您可以看到类型的工作方式并了解如何解析您的数据。
最后,您仍然会遇到错误,因为试图将timedelta
对象与date
或datetime
对象进行比较。timedelta
是一段时间,它与特定日期无关。
您可以通过更换
来解决此问题 if time <= project_time:
与您的打印功能相同:
if time <= now + timedelta(days=i)