2015-01-20 1 views
1

Я работаю над сайтом, на котором я хочу сопоставить страницу, используя уникальную строку. В настоящее время у меня есть две страницы, которые я использую с помощью Regex. Но я хочу использовать текст для сопоставления других страниц.C# Selenium - Как однозначно сопоставлять веб-страницу с помощью текста

Что я сделал до сих пор:

//This is the PageMatch attribute I'm using for the page. 
[PageTitle("Some Text...")] 

И реализуется, как показано ниже:

public class PageTitleAttribute : PageMatchAttribute 
    { 
     protected string interviewTitle; 

     public PageTitleAttribute(string title) 
     { 
      interviewTitle = title; 
     } 

     public override Func<IWebDriver, bool> PageMatchFunction() 
     { 
      return driver => driver.FindElement(By.XPath("/html/body/div[2]/div/h3")).Text.Contains(interviewTitle); 
     }  
    } 

Это не в состоянии найти обработчик страниц .. Может кто-нибудь помочь мне с это?

+0

Можете ли вы уточнить, что вы точно спрашиваете? – Saifur

+0

Решена ли ваша проблема? – Saifur

ответ

1

Это зависит от того, как написана страница. Мы используем шаблоны PageObject, и я использую xpath для идентификации названия страницы. Большая часть моей страницы заголовка выглядит следующим образом:

div class="gbl-table-wrapper ui-widget sitemap-menu"> 
    <div class="mod-header gbl-wrapper"> 
    <h3>Title</h3> 
    </div> 
</div> 

И я использую //*[.='Title'], чтобы однозначно идентифицировать эту страницу. Это xpath очень удобно, которая делает поиск регулярных выражений всей страницы и найти элемент соответствующего текст Title

Если вы хотите придерживаться своего плана, то лучше всего было бы использовать FindElements() метод и найти нужный элемент из списка. Это может проблема производительность

_driver.FindElements(By.XPath("//h3")).ToList().Any(element => element.Text.Contains("Something")); 

вам нужно импортировать using System.Linq; для использования Linq

Надеется, что это помогает

+0

Вам не нужен 'ToList'. 'FindElements' возвращает' ReadOnlyCollection', который наследуется от 'List'. – Arran

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