使用Selenium获取input元素日期文本返回空值的解决方案问询
问题解决:Selenium读取input日期字段返回空值
问题根因
<input>属于表单元素,填充的内容保存在value属性中,不属于元素的文本节点,调用.text属性只能读取元素标签包裹的文本内容,因此返回空值。
可行解决方案
直接通过get_attribute()方法读取元素的value属性即可拿到对应日期值,正确代码如下:
date = self.driver.find_element(By.XPATH, "//*[@id='out']/table/tbody/tr[3]/td[5]/input").get_attribute("value")
可选优化(避免偶发空值)
从代码中的ng-model属性可判断当前页面是Angular框架渲染,可能存在数据绑定延迟,可增加显式等待确保值加载完成后再读取,示例代码:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最多等待10秒,直到目标input元素加载完成 date_element = WebDriverWait(self.driver, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='out']/table/tbody/tr[3]/td[5]/input")) ) date = date_element.get_attribute("value")
内容的提问来源于stack exchange,提问作者Simon Geertsen
相关产品推荐
相关产品推荐

