2016-09-11 2 views
0

Я создаю свой тест объектной модели первой страницы. Основано на Selenium's test design considerations Я хотел бы проверить, что некоторые элементы найдены, когда объект страницы создается.Динамический доступ к элементам объектов страницы

Существует один, один, проверки, который может и должен быть в пределах объекта страницы, и это, чтобы проверить, что страница, и, возможно, критические элементы на странице, были загружены правильно.

Есть ли способ решить это, не прибегая к отражению?

public class PageObject 
{ 
    [FindsBy(How = How.Name, Using = "q")] 
    private IWebElement q1 { get; set; } 

    [FindsBy(How = How.Name, Using = "qq")] 
    private IWebElement q2 { get; set; } 

    protected IWebDriver webDriver; 

    public PageObject(IWebDriver webDriver) 
    { 
     this.webDriver = webDriver; 

     PageFactory.InitElements(webDriver, this); 
     HighPriorityElementsFound(); 
    } 

    private bool HighPriorityElementsFound() 
    { 
     // how to verify all private IWebElements elements here? 
    } 
} 

ответ

0

Я обычно использую конструктор для проверки, что я на хорошей странице, и я делаю это, выявляя часть URL (URL содержит «payments.asp» на странице платежей) и некоторый элемент, который уникален только для этой конкретной страницы и других страниц на сайте. Если этот элемент не существует, я выдаю исключение с сообщением и регистрирую URL-адрес, который я сейчас использую. Это помогает, потому что это позволяет сразу узнать, что вы не находитесь на странице, на которой вы ожидали приземления, или страница не загружалась должным образом.

Другое примечание ... нет необходимости в HighPriorityElementsFound(). Вы только назовете этот код из конструктора, так почему бы просто не поместить этот код внутри конструктора?

+0

В основном вы заявляете, что я пытаюсь выполнить, но я боюсь, что он не отвечает на вопрос. Я пытаюсь извлечь «какой-то элемент, который уникален только для этой конкретной страницы», динамически вместо жесткого кодирования. Не уверен, что вы подразумеваете под последним предложением. Я вызываю 'HighPriorityElementsFound' из конструктора. Если это метод или нет, это не имеет значения. – filur

+0

Как ваш скрипт сможет идентифицировать уникальный элемент, а не все другие страницы сайта, которые он никогда не посещал? Во второй точке функции предназначены для кода многократного использования. 'HighPriorityElementsFound()' никогда не будет использоваться повторно, поэтому зачем использовать его в функции? Кроме того, он возвращает 'bool', но вы не фиксируете возврат, так зачем беспокоиться о возврате' bool'? – JeffC

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