2015-02-09 3 views
0

C# Selenium Webdriver Поэтому мне нужно убедиться, что ни одна из моих страниц (около 200 страниц) не содержит определенной известной строки. Есть ли способ, которым я могу сканировать страницу для существования этой строки, и если она это делает, верните и элемент ElementID этого элемента, и всю строку? Например мой источник, как:Я хочу получить ElementID, который содержит известную строку

<a id="cancel_order_lnkCancel">Cancel Order</a> 

Я хочу, чтобы найти слово «Отмена» на всей странице (<div id="sitewrapper">) и вернуть оба cancel_order_lnkCancel; Отмена заказа

Благодаря

ответ

1

Вы может использовать XPath для поиска по тексту. например .:

var element = driver.FindElement(By.XPath(string.Format("//*[contains(text(), '{0}')]", value))); 

value быть строка, которую вы ищете.

Затем, чтобы получить разметку элемента и содержание:

var html = element.GetAttribute("outerHTML"); 
var text = element.Text; 

или

var text = element.GetAttribute("innerHTML"); 
+0

Не может ли это исключить элемент, который не найден? –

+0

Спасибо, ребята, но я хочу вернуть фактический идентификатор элемента, который также содержит эту строку? Я могу получить значение из моего IWelement, который выглядит как 0.45616444828920066-1, но фактический id, который я хочу, - cancel_order_lnkCancel. hmmmm –

+0

Похоже, что это сработает: myWebElement.GetAttribute ("externalHTML"); –

0

Я не работал в C# связывание, но вы можете использовать FindElements, чтобы получить список всех элементов, содержащих текст. Вы можете без сомнения использовать xpath @ Jarga. Хорошая вещь с FIndElements будет заключаться в том, что она не выдаст вам исключения (по крайней мере, это то, что происходит в java), хотя вам нужно использовать try catch для обработки getAttribute, если вы получите null для value из id. И если вы перебираете список, вы можете получить все тексты, используя метод getText.