2017-01-13 5 views
0

Мне просто любопытно, что может заставить метод FindElement ничего не возвращать (но не null), даже если этот элемент присутствует на странице и в HTML. Время от времени, когда у меня есть метод Assert.AreEqual в моем коде, у него будет эта проблема.Selenium: Что заставляет FindElement ничего не возвращать?

Мои Утверждает обычно выглядят следующим образом:

Assert.AreEqual(stringValue, FindElement(By.XPath("<XPath path>")).Text); 

И сообщение об ошибке приходит домой, говоря, что FindElement вернулся в «<>», как не было никакого значения. Возможно ли, что мой сценарий идет слишком быстро и проскакивает через него или есть еще одна подчеркнутая проблема.

ответ

1

Это может произойти, если этот текст на вашей веб-странице фактически не сохранен как innerHTML, это может быть свойство value вашего элемента, и при использовании метода Text вы получаете только innerHTML, поэтому он выглядит пустым. Попробуйте GetAttribute, проверьте свой элемент, чтобы узнать, как он хранит этот текст.

Надеюсь, я правильно понял вашу проблему. : D

+0

Да, вы поняли это правильно. Я дам этот снимок в следующий раз, когда увижу, что этот вопрос возник во время моего тестирования. Спасибо, что объяснили это. – Tscott

+0

Рад помочь. Вы можете принять/отменить ответ, чтобы сообщество могло видеть его более легко и извлекать выгоду из него. – acikojevic

+0

tscott как своего рода отладка, которую вы, возможно, захотите вытащить в виде var сначала и посмотреть, что вы получаете. var value = FindElement (By.XPath («»)). Текст); – Dazed

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