Selenium 在 google 日历 (Python) 中找不到表单元素
Selenium cannot find form element in google calendar (Python)
我正在尝试使用 Selenium 和 Python 通过 csv 文件将日历事件导入 google 日历。我无法 select 表单元素将我的文件路径输入 google。我尝试通过 xpath、cssselector 和 class 名称查找元素,但每次都出现相同的错误:
selenium.common.exceptions.NoSuchElementException: Message: no such
element: Unable to locate element
fileElem = browser.find_element_by_xpath('//*[@id="YPCqFe"]/div/div/div/div[1]/div[1]/div/form')
上面显示的示例 xpath 是通过 google chrome 直接复制的。任何想法为什么我不能让它工作?谢谢!这是元素的图片和 HTML 代码。
好的,所以我自己尝试了一下,发现当您打开那个特定的 URL 时,它会将您重定向到 google 登录页面,该页面没有您的元素路径。所以你可以做的就是去登录页面找到用户名和密码的表格,然后使用 sendkeys()
输入你的 username/password。然后它应该将您重定向到正确的页面并且 XPath 将起作用。
使用此代码:
from selenium import webdriver
import time
d = webdriver.Chrome("executable file path")
d.get("https://calendar.google.com/calendar/r/settings/export")
d.find_element_by_xpath('//*[@id="identifierId"]').send_keys("your email")
d.find_element_by_xpath('//*[@id="identifierNext"]').click() # Next button
time.sleep(0.5) # Sometimes the time it takes to load the next page will cause the next line to fail
d.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input').send_keys("your password")
d.find_element_by_xpath('//*[@id="passwordNext"]').click() # Next button
d.find_element_by_xpath('//*[@id="YPCqFe"]/div/div/div/div[1]/div[1]/div/form/label') #Now you have the proper element
用 //form[@jsname="GBqgNb"]//input
更改 xpath 但如果仍然找不到,请尝试添加 WebDriverWait()
# wait 5 second
fileElem = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH , '//form[@jsname="GBqgNb"]//input')))
fileElem.send_keys("/path/to/file")
我正在尝试使用 Selenium 和 Python 通过 csv 文件将日历事件导入 google 日历。我无法 select 表单元素将我的文件路径输入 google。我尝试通过 xpath、cssselector 和 class 名称查找元素,但每次都出现相同的错误:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
fileElem = browser.find_element_by_xpath('//*[@id="YPCqFe"]/div/div/div/div[1]/div[1]/div/form')
上面显示的示例 xpath 是通过 google chrome 直接复制的。任何想法为什么我不能让它工作?谢谢!这是元素的图片和 HTML 代码。
好的,所以我自己尝试了一下,发现当您打开那个特定的 URL 时,它会将您重定向到 google 登录页面,该页面没有您的元素路径。所以你可以做的就是去登录页面找到用户名和密码的表格,然后使用 sendkeys()
输入你的 username/password。然后它应该将您重定向到正确的页面并且 XPath 将起作用。
使用此代码:
from selenium import webdriver
import time
d = webdriver.Chrome("executable file path")
d.get("https://calendar.google.com/calendar/r/settings/export")
d.find_element_by_xpath('//*[@id="identifierId"]').send_keys("your email")
d.find_element_by_xpath('//*[@id="identifierNext"]').click() # Next button
time.sleep(0.5) # Sometimes the time it takes to load the next page will cause the next line to fail
d.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input').send_keys("your password")
d.find_element_by_xpath('//*[@id="passwordNext"]').click() # Next button
d.find_element_by_xpath('//*[@id="YPCqFe"]/div/div/div/div[1]/div[1]/div/form/label') #Now you have the proper element
用 //form[@jsname="GBqgNb"]//input
更改 xpath 但如果仍然找不到,请尝试添加 WebDriverWait()
# wait 5 second
fileElem = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH , '//form[@jsname="GBqgNb"]//input')))
fileElem.send_keys("/path/to/file")