You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium WebDriver获取指定class的div元素值?

解决Selenium获取"21:45"文本的问题

1. 修正基础代码错误

你之前用FindElements(复数方法)获取的是元素列表,无法直接在列表上调用FindElement。先调整为获取单个父元素,再定位子元素:

// 定位单个date-time-container容器
var dateContainer = driver.FindElement(By.CssSelector("div.date-time-container"));
// 获取start-time元素的文本
string start24 = dateContainer.FindElement(By.CssSelector("div.start-time")).Text;

2. 直接定位目标元素(更简洁)

无需先找父容器,直接定位start-time元素:

string start24 = driver.FindElement(By.CssSelector("div.start-time")).Text;

3. 处理元素未加载或Text获取失败的情况

如果仍返回空值,大概率是元素未完全渲染,需添加显式等待:

using OpenQA.Selenium.Support.UI;

// 等待start-time元素可见,最长等待10秒
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var startTimeElement = wait.Until(d => d.FindElement(By.CssSelector("div.start-time")));
string start24 = startTimeElement.Text;

若Text属性依旧为空,可尝试获取原生DOM属性:

string start24 = startTimeElement.GetAttribute("textContent").Trim();
// 或替换为innerText
string start24 = startTimeElement.GetAttribute("innerText").Trim();

4. XPath替代方案

如果CSS选择器效果不佳,可改用XPath定位:

// 直接定位start-time元素
string start24 = driver.FindElement(By.XPath("//div[@class='start-time']")).Text;
// 精准路径定位
string start24 = driver.FindElement(By.XPath("//div[@class='date-time-container']//div[@class='start-time']")).Text;

内容的提问来源于stack exchange,提问作者Pietro Favuzza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:45:59