python - 使用自定义信息填写日历

标签 python html css selenium python-requests

我正在尝试为带有自定义信息的网页创建日历。我没有足够强大的 CSS 背景来构建像样的日历,所以我求助于 Google 嵌入式日历。我的网页有指向我帐户的日历链接,但我想导入我自己的 ical 文件。该文件是在脚本中自动生成的,我想添加导入 .ics 的功能。我目前使用 selenium 访问页面 ( https://calendar.google.com/calendar/r/settings/export?tab=wc ),但我无法让 selenium 捕获我选择文件的窗口。我的下一个想法是将文件路径写入输入部分,然后单击导入按钮,但导入标签被隐藏,我似乎无法找到让 selenium 找到它的方法。我的下一个解决方案是使用 requests.post,但没有明确的 url 可以发布到。我被卡住了,所以如果能帮助解决这四个问题中的任何一个,我们将不胜感激!

问题:

1) 带有事件信息的体面日历,易于用 css 和 html 编码,或者可以嵌入并接受 .ics 的日历

2) 一种捕获文件资源管理器窗口以键入我自己的路径的方法

3) 找到隐藏的输入标签以将文件路径放入(以及如何确保文件已上传)

4) 找到POST方法调用的服务器的url

最佳答案

虽然我无法回答您所有的 4 个问题,但我可以帮助解决 #3:

# find the input
input = driver.find_element_by_xpath("//input[@type='file']")

# execute script to reveal hidden element -- this part might be optional
driver.execute_script("arguments[0].style.display = 'block';", input)

# send file path keys to the input
input.send_keys("C:/Path/To/Your/File")

# verify if the upload was successful
uploaded_file = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//input[@type='file']/preceding-sibling::span[not(contains(@aria-hidden, 'true'))]")))

if (uploaded_file.text == file_name): # file_name is the name of file, like Test.txt
    print("File upload was successful")

此代码将找到接受您的文件上传的 input 元素,并执行一些 Javascript 以显示该元素——这适用于任何 ElementNotVisibleElementNotInteractable 我们可能遇到的异常。然后,我们 send_keys 到输入元素——它接受您尝试上传的元素的完整绝对文件路径。

然后,我们通过检查出现的包含上传文件名称的 span 元素来验证上传。如果此元素存在,并且其 .text 属性等于您上传的文件的名称(如 Test.txt),则上传成功。

如果文件未上传,

uploaded_file.text 返回 Select file from your computer。文件上传成功后,此文本将更改为 Test.text

希望对您有所帮助。

关于python - 使用自定义信息填写日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58942346/

相关文章:

python - 如何使用 libcloud 获取 openstack 风格的 cpu 信息?

python - 如何在 Python 字符串中包含转义字符

python - 在 Sun Grid Engine 中运行 Python MPI 程序

javascript - 如何将图片高度和宽度传递给 html 灯箱

python - 在python中将元数据从一个mp4文件复制到另一个文件

javascript - 带有 Angular 和 Bootstrap 的日期选择器绑定(bind)

javascript - 无法创建垂直菜单

css - 将 Bootstrap 4 导航栏覆盖的宽度设置为导航内容

html - 绝对定位 HTML 元素,但它的 100% 宽度是父元素的宽度

html - 制作一个带有不透明边框和文本/字体超赞图标的透明圆形按钮