如何从硒网站上获取时间?
Posted
技术标签:
【中文标题】如何从硒网站上获取时间?【英文标题】:How to get time from website on selenium? 【发布时间】:2022-01-15 09:52:39 【问题描述】:我想从https://www.hko.gov.hk/en/gts/time/clock_e.html获取时间
目前我的代码是:
timeDriver.get("https://www.hko.gov.hk/en/gts/time/clock_e.html")
HKTime = WebDriverWait(timeDriver,3).until(EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div[2]/div/div/div[4]/div/div[2]/div/div[3]'))).text
print(HKTime)
但是,它什么也没打印。任何想法为什么?
【问题讨论】:
【参考方案1】:使用visibility_of_element_located()
代替presence_of_element_located()
并跟随css selector
来识别元素。
driver.get("https://www.hko.gov.hk/en/gts/time/clock_e.html")
print(WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div#hkoClock_Time'))).get_attribute("innerText"))
print(WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div#hkoClock_Time'))).text)
或者你也可以关注xpath
driver.get("https://www.hko.gov.hk/en/gts/time/clock_e.html")
print(WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.XPATH, '//div[@id="hkoClock_Time"]'))).get_attribute("innerText"))
print(WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.XPATH, '//div[@id="hkoClock_Time"]'))).text)
【讨论】:
【参考方案2】:要定位 可见 元素而不是 presence_of_element_located(),您需要为 visibility_of_element_located() 引入 WebDriverWait,您可以使用以下任一 Locator Strategies :
使用 CSS_SELECTOR 和 get_attribute("textContent")
:
driver.get("https://www.hko.gov.hk/en/gts/time/clock_e.html")
print(WebDriverWait(driver, 7).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div#hkoClock_Time"))).get_attribute("textContent"))
使用 XPATH 和 text 属性:
driver.get("https://www.hko.gov.hk/en/gts/time/clock_e.html")
print(WebDriverWait(driver, 7).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='hkoClock_Time']"))).text)
控制台输出:
am 07:14:03
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
【讨论】:
以上是关于如何从硒网站上获取时间?的主要内容,如果未能解决你的问题,请参考以下文章