在 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;
在这种情况下如何获取文本 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;