2015-05-21 2 views
1

Как я могу получить текст 200 в этом случае:Найти текст с селеном в Chrome

<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 собственность возвращает пустую строку :(

Любые мысли?

ответ

0

Вы используете 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; 
0

Чтобы получить текст после того, как вы нашли элемент:

string text = currentElement.Text; 
+0

проблема заключается в том currentElement.Text пусто;) [ссылка] (http://prntscr.com/77tls7) – dina

+0

является currentElement с большим тэгом? Существуют ли другие большие элементы в DOM с тем же классом и без текста? –

+0

да это единственное с этим именем – dina

Смежные вопросы