在 Chrome 中使用 Selenium 查找文本

Find text with Selenium in Chrome

在这种情况下如何获取文本 200:

<p style="margin:0"> 
You can get <big class="tooltip">200</big> more</p>

我正在尝试使用:

ReadOnlyCollection<IWebElement> list = _driver.FindElements(By.XPath("//*[contains(@class, 'tooltip')]"));

但是无法获取文本,因为.Text 属性 returns 是一个空字符串:(

有什么想法吗?

您正在使用 ClassName()Xpath

ReadOnlyCollection<IWebElement> list = _driver.FindElements(By.Xpath("//*[@class=\"tooltip\"]/big"));

但是,在这种情况下我会使用 CssSelector,因为 css 总是优先于 xpath

ReadOnlyCollection<IWebElement> list = _driver.FindElements(By.CssSelector("big.tooltip"));

考虑到该元素不在任何 iframe 内,因为它没有抛出任何错误,我假设需要等待。尝试以下

By byCss = By.CssSelector("big.tooltip");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
    return d.FindElement(byCss);
});

var text = myDynamicElement.Text;

看起来元素被隐藏了。所以 JavaScript 可能是你最好的尝试。

var text = ((IJavaScriptExecutor)driver).ExecuteScript("return document.querySelector('.tooltip_health_limit').innerHTML;") as string;

找到元素后获取文本:

string text = currentElement.Text;