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은 지불 페이지 "payments.asp"를 포함)이 URL의 일부를 식별하여이 작업을 수행 할 몇 가지 요소가 이 특정 페이지와 사이트의 다른 페이지에서만 고유합니다. 해당 요소가 존재하지 않으면 메시지가있는 예외가 발생하고 현재있는 URL을 기록합니다. 이 기능은 방문 예정 페이지에 있지 않거나 페이지가 제대로로드되지 않았 음을 즉시 알 수 있기 때문에 도움이됩니다.

다른 메모 ... HighPriorityElementsFound()은 필요하지 않습니다. 당신은 생성자로부터 그 코드를 호출 할 것이고, 그래서 생성자 안에 그 코드를 넣는 것이 어떻겠습니까?

+0

기본적으로 내가 성취하려는 것을 말하고 있지만 질문에 답할 수 없습니다. 난 하드 코딩 대신 동적으로'이 특정 페이지에만 유일하게 존재하는 일부 요소 '를 추출하려고합니다. 마지막 문장으로 무엇을 의미하는지 확신 할 수 없습니다. 생성자에서'HighPriorityElementsFound'를 호출합니다. 그것이 방법이든 아니든 상관 없습니다. – filur

+0

스크립트는 방문한 적이없는 사이트의 다른 모든 페이지와 고유 한 요소를 어떻게 식별 할 수 있습니까? 두 번째 점에서, 함수는 재사용 가능한 코드를위한 것이다. 'HighPriorityElementsFound()'는 결코 재사용되지 않으므로 왜 함수에 넣어야합니까? 또한 'bool'을 반환하지만 반환 값을 포착하지 않으므로 'bool'을 반환해야하는 이유는 무엇입니까? – JeffC

관련 문제