2017-02-14 12 views
0

Надеюсь, что у вас все хорошо. Я совершенно новый для селена и полный новичок для переполнения стека, надеюсь, что я не нарушаю никаких правил здесь.с использованием Selenium webdriver для поиска элементов с  

Я пытаюсь создать тестовую структуру и некоторые тесты с помощью следующей

C#, селен WebDriver, specflow, NUnit

Я в настоящее время работаю запрос к SQL сервер БД, чтобы получить какой-либо текст и затем пытается использовать этот текст для проверки и поиска этого элемента на сайте. Проблема у меня есть, что сайт имеет элемент HTML, закодированный

Например:

данных, извлекаемых из базы данных может быть что-то вроде - «Глинозем MB Китая металлургического сорта поставляемого ....»

элемент на сайте выглядит следующим образом -

<span class="com">Alumina&nbsp;MB&nbsp;China&nbsp;metallurgical&nbsp;grade&nbsp;delivered&nbsp;duty&nbsp;paid&nbsp;RBM/tonne</span>

Do кто-нибудь знает, как я мог проанализировать данные, полученные из БД, в команду findElement, чтобы легко найти этот элемент на сайте, пока он содержит &nbsp;

С нетерпением ждите от вас ответа.

Большое спасибо Субан

+0

Можете ли вы показать, что вы сделали до сих пор? –

+0

до сих пор я пытался driver.FindElement (By.Xpath ("// * [@ класс = 'COM' и текст() = 'Alumina   MB   Китай   металлургического   сорт   доставлен   долга   оплачиваемой   УКР/т '] ")); – Suban

+0

Привет, Субан. Возможно, метод Replace может помочь в вашем случае. 'string htmlString = dataBaseString.Replace ("", " "); ' –

ответ

1

Try, чтобы избежать HTML символов с помощью System.Web.HttpUtility.HtmlDecode

это работает для меня:

var escaped = System.Web.HttpUtility.HtmlDecode(".//span[text()='Alumina&nbsp;MB&nbsp;China&nbsp;metallurgical&nbsp;grade&nbsp;delivered&nbsp;duty&nbsp;paid&nbsp;RBM/tonne']"); 
IWebElement element = driver.FindElement(By.XPath(escaped)); 
+0

Perfect @Alex. это сработало! большое спасибо – Suban

0

сначала вы должны заменить все экземпляры $nbsp; в вашей XPATH строки в , а затем искать для этого

0
IWebElement element = driver.FindElement(By.XPath("//span[contains(@class'com') and normalize-space(translate(., '\u00A0', ' '))='Alumina MB China metallurgical grade delivered']")); 

Объяснение: Использование XPath найти span элемент с классом, содержащим строку com, получить текст из этого (.) заменить все &nbsp символов (т.е. unicode \u00A0) с обычным символом space, а также пробелы в переднем и заднем пробелах (эта последняя часть может не понадобиться в вашей ситуации).

Примечание: строка, которая должна идти в одинарных кавычках после =, должна содержать только обычные пробелы.