Python selenium can';无法定位元素,因为它不在源代码中
我正在尝试从中获取日历中突出显示的日期 我可以在chrome inspector中看到“calendar day”类,但它没有显示在源代码中。 我还试图找到其他类元素,如“月-周”,但失败了。有人能帮我诊断出是什么问题吗?我已经研究过阴影区,但它似乎不是这里的问题(尽管我可能错了) 此外,我还试图获取url“/web/20110430/area51.stackexchange.com”,但不知道如何按类、标记名、css或Xpath进行定位Python selenium can';无法定位元素,因为它不在源代码中,python,selenium,Python,Selenium,我正在尝试从中获取日历中突出显示的日期 我可以在chrome inspector中看到“calendar day”类,但它没有显示在源代码中。 我还试图找到其他类元素,如“月-周”,但失败了。有人能帮我诊断出是什么问题吗?我已经研究过阴影区,但它似乎不是这里的问题(尽管我可能错了) 此外,我还试图获取url“/web/20110430/area51.stackexchange.com”,但不知道如何按类、标记名、css或Xpath进行定位 driver = webdriver.Firefox()
driver = webdriver.Firefox()
driver.get("https://web.archive.org/web/20110101000000*/area51.stackexchange.com")
element=driver.find_element_by_class_name("calendar-day")
提前谢谢 只需等待日历的div元素出现并打印即可。您的类名有一个额外的空间,并且在页面加载后需要一些时间
element=WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//div[contains(@class,'calendar-day')]")))
print(element.text)
产出11
抢
elements=WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[contains(@class,'calendar-day')]")))
for element in elements:
print(element.text)
输出
11
30
7.
16
18
10
11
7.
十二,
进口
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
只需等待日历的div元素出现并打印它。您的类名有一个额外的空间,并且在页面加载后需要一些时间
element=WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//div[contains(@class,'calendar-day')]")))
print(element.text)
产出11
抢
elements=WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[contains(@class,'calendar-day')]")))
for element in elements:
print(element.text)
输出
11
30
7.
16
18
10
11
7.
十二,
进口
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
您正在使用的页面需要一段时间才能加载,因此在提取之前引入一些显式等待会更好 示例脚本可以是:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("https://web.archive.org/web/20110101000000*/area51.stackexchange.com")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "calendar-day ")))
print(element.text)
driver.quit()
要提取多个元素,只需添加/更改WebDriverWait(driver,20)。直到(EC.presence\u所有元素的位置((By.CLASS\u NAME,“日历日”))
因此,可以更新示例脚本
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("https://web.archive.org/web/20110101000000*/area51.stackexchange.com")
wait = WebDriverWait(driver, 10)
element = wait.(driver,20).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "calendar-day ")))`
for el in element:
print(el.text)
driver.quit()
您正在使用的页面需要一段时间才能加载,因此在提取之前引入一些显式等待会更好 示例脚本可以是:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("https://web.archive.org/web/20110101000000*/area51.stackexchange.com")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "calendar-day ")))
print(element.text)
driver.quit()
要提取多个元素,只需添加/更改WebDriverWait(driver,20)。直到(EC.presence\u所有元素的位置((By.CLASS\u NAME,“日历日”))
因此,可以更新示例脚本
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("https://web.archive.org/web/20110101000000*/area51.stackexchange.com")
wait = WebDriverWait(driver, 10)
element = wait.(driver,20).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "calendar-day ")))`
for el in element:
print(el.text)
driver.quit()
您的代码缺少“.而且类名的末尾有一个空格。@arundeepchohan,谢谢,修复了这些问题。您的代码缺少“.而且类名的末尾有一个空格。@arundeepchohan,谢谢,修复了这些问题。谢谢!等待工作。但是,它只返回第一个事件,即11。类名“日历日”下有多个案例。在等待捕获所有案例之后,我还尝试通过类名称查找元素。你知道如何捕捉所有的案例吗?让我知道我是否应该发布一个关于这个的新问题。谢谢!等待工作。但是,它只返回第一个事件,即11。类名“日历日”下有多个案例。在等待捕获所有案例之后,我还尝试通过类名称查找元素。你知道如何捕捉所有的案例吗?让我知道我是否应该发布一个关于这个的新问题。谢谢!等待工作。输出11是类名“calendar day”下的第一个事件。在等待之后,我还尝试通过类名称查找元素,但只找到第一个。你知道如何捕捉所有的案例吗?让我知道我是否应该发布一个关于这个的新问题。勾选我的问题为正确。还添加了抓取倍数。谢谢!等待工作。输出11是类名“calendar day”下的第一个事件。在等待之后,我还尝试通过类名称查找元素,但只找到第一个。你知道如何捕捉所有的案例吗?让我知道我是否应该发布一个关于这个的新问题。勾选我的问题为正确。还添加了抓取倍数。