2015-07-14 2 views
0

В настоящее время я пытаюсь начать писать свои тесты с использованием TypeScript (решение в JavaScript тоже замечательно), и мне трудно понять, как использовать PageFactory из C#. В C# используется для записи отдельных классов для каждой страницы/форме веб-сайта, что я тестирование, например:Selenium WebdriverJS, как использовать PageFactory?

public class RegisterForm 
{ 
    public RegisterForm() 
    { 
     PageFactory.InitElements(Driver.Chrome, this); 
    } 

    [FindsBy(How = How.CssSelector, Using = @"........")] 
    public IWebElement EmailField { get; set; } 
} 

И всякий раз, когда мне нужно использовать элементы из RegisterForm я инициализирует этот класс и использовать их отсюда. Как я могу сделать что-то подобное в TypeScript или JavaScript?

ответ

0

Пример того, как я создал мои страницы объекты с помощью транспортира на не угловом странице ниже

'use strict'; 

var DocumentationPage = function() { 

    var documentationLink = element(by.css(".nav-global a[href*='Docs'")); 
    var documentationURL = "https://docs.docker.com/" 
    var installButton = element(by.buttonText("Install")); 
    var dockerEngineButton = element(by.buttonText("Docker Engine")); 
    var dockerLinuxButton = element(by.buttonText("Linux")); 
    var dockerCloudButton = element(by.buttonText("Cloud")); 
    var dockerFundamentalsButton = element(by.buttonText("Docker Fundamentals")); 
    var useDockerButton = element(by.buttonText("Use Docker")); 
    var amazonInstallLink = element(by.partialLinkText("Amazon EC2 Installation")); 


    this.go = function(){ 
     browser.get(documentationURL); 
     browser.sleep(100); 
    }; 
    this.drillDownToAmazonInstallDocumentation = function(){ 
     installButton.click(); 
     browser.sleep(100); 
     dockerEngineButton.click(); 
     browser.sleep(100); 
     dockerCloudButton.click(); 
     browser.sleep(100); 
    }; 
    this.clickInstallOnAmazonLink = function(){ 
     amazonInstallLink.click(); 
     browser.sleep(100); 
    }; 
    this.drillUpToAmazonInstallDocumentation = function(){ 
     dockerCloudButton.click(); 
     browser.sleep(100); 
     dockerEngineButton.click(); 
     browser.sleep(100); 
     installButton.click(); 
     browser.sleep(2000); 
    }; 
}; 

module.exports = DocumentationPage; 

Я использовал объекты страниц в тестах, как показано ниже.

var HomePage = require("./pages/HomePage.js"); 
var DocumentationPage = require('./pages/DocumentationPage.js'); 


describe("Testing the Docker Documentation UI", function(){ 

    var hp = new HomePage(); 
    var dp = new DocumentationPage(); 

beforeEach(function(){ 
    browser.ignoreSynchronization = true; 
    dp.go(); 
}); 

    it("Validate accordion navigation drills down", function(){ 
    dp.drillDownToAmazonInstallDocumentation(); 
    dp.clickInstallOnAmazonLink(); 
    expect(browser.getTitle()).toContain("Amazon EC2 Installation"); 
    }); 

    it("Validate accordion navigation drills up", function(){ 
    dp.drillDownToAmazonInstallDocumentation(); 
    dp.drillUpToAmazonInstallDocumentation(); 
    }); 
}); 
Смежные вопросы