Проблема при входе в систему на объектной модели страницы - PullRequest
0 голосов
/ 14 мая 2018

У меня есть сценарий использования, который обозначает следующие шаги, которые я пытаюсь реализовать, используя POM в Nunit.

  1. Открыть форму входа
  2. Подача данных в имени пользователяи поля пароля с использованием Excel.

    3a. Если учетные данные верны

    a) Записать тестовый пример как пройденный

    b) Нажмите на ссылку «Выйти из системы»

4.Закройте оставшееся окно браузера

3b. Если учетные данные неверны

a) Зарегистрируйте тестовый случай как неудачный

b) Очиститетекстовые поля имени пользователя и пароля

c) Нет необходимости закрывать окно браузера.

Теперь проблема уже установлена, драйвер создан в [Setup] в Main Class.Как нам снова создать окно браузера в случае успешного входа в систему?

Я добавляю следующий код

Login Object Class
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.PageObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PracticePrograms.PageObjectsWithPageFactory
{
public class VSSLoginObjects
{
    [FindsBy(How = How.Id, Using = "userNameOldLook")]
    public IWebElement Userid { get; set; }

    [FindsBy(How = How.XPath, Using = "//input[@type='password']")]
    public IWebElement Password { get; set; }

    [FindsBy(How = How.XPath, Using = "//a[contains(text(),'login')]")]
    public IWebElement Btn_Login { get; set; }

    [FindsBy(How = How.XPath, Using = "//li[contains(text(),'Login failed')]")]
    public IWebElement Lbl_Login_Failed { get; set; }

    [FindsBy(How = How.XPath, Using = "//a[contains(text(),'Logoff')]")]
    public IWebElement lnk_logoff;


    public VSSLoginObjects()
    {
        PageFactory.InitElements(DriverInstance.driver, this);
    }

    public void Login_QAPortal()
    {
        Userid.SendKeys("v0c1344");
        Wait.UntilElementDisplayed(DriverInstance.driver, Password);
        Password.SendKeys("welcome5");
        Btn_Login.Click();
        //return new QAPortal_LandingPage_Objects();

    }
    public void Test_Login_QA_Portal()
    {
        String Excel = @"C:\\Selenium Files\\TestData.xlsx";
        int length = ExcelClassTemp.GetRowCount(Excel, 3);
        for (int i = 2; i <= length; i++)
        {

            String data = ExcelClassTemp.ReadExcel(Excel, 3, i, 1);
            String upper_data = data.ToUpper();
            Userid.SendKeys(upper_data);
            Password.SendKeys("Welcome567");
            Btn_Login.Click();

            if (DriverInstance.driver.PageSource.Contains("Trucks Portal"))
            {
                Console.WriteLine("User Credentials" + upper_data + "Passed");
                lnk_logoff.Click();
                DriverInstance.driver.Close();

            }
            else
            {
                Console.WriteLine("User Credentials" + upper_data + "Failed");
                Userid.Clear();
                Password.Clear();
            }



        }

    }
   }
   }

Добавление основного класса

Main Class
using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NUnit.Framework;
using OpenQA.Selenium.Chrome;

 namespace PracticePrograms.PageObjectsWithPageFactory
 {
public class Tests
{
    [SetUp]
    public void setup()
    {
        DriverInstance.driver = new ChromeDriver();
        DriverInstance.driver.Navigate().GoToUrl("Go to Url");
        DriverInstance.driver.Manage().Window.Maximize();


    }



    [Test]
    public void Perform_VSS_Login()
    {
        VSSLoginObjects login = new VSSLoginObjects();
        login.Test_Login_QA_Portal();

    }



    }

}

1 Ответ

0 голосов
/ 14 мая 2018

Внесите несколько изменений:

ссылка DriverInstance.driver объявляет это как глобальное.

и когда вы создаете объект VSSLoginObjects в вашем методе Test, например:

VSSLoginObjects login = new VSSLoginObjects();  

Передать ссылку DriverInstance.driver в new VSSLoginObjects();

Что-то вроде: VSSLoginObjects(reference of driver object).

Объяснение: Когда вы создаете объект любого класса и передаете ссылку, будет вызван параметризованный конструктор .

Я верю, что этот конструктор будет называться:

 public VSSLoginObjects()
    {
        PageFactory.InitElements(DriverInstance.driver, this);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...