2016-05-25 14 views
-1

Können Sie mir bei dieser Frage helfen.Web-Treiber-Code separat verwalten

Ich arbeite an einem Testautomatisierungs-Framework und möchte meinen Webdriver-Code getrennt halten und von meinen Testfällen initiieren.

bitte helfen Sie mir dabei. - Dank

+0

Können Sie das genauer ausführen? Was ist dein Bedarf? Es ist unklar, wonach Sie fragen? – Haxor

+0

Unklare Frage. –

+0

Sorry Guys - Es war eine allgemeine Frage :) Ich wollte einen Ansatz, wo ich mit meinem Webdriver-Code umgehen kann wie Speichern meiner Firefox-Treiber, Chrome-Treiber, IE-Treiber, Verwalten von Cookies, maximieren Sie den Browser an einem Speicherort unter dem Projekt und verwenden Sie einfach die Treiber in meinem Testfall, indem Sie nur eine Codezeile hinzufügen, anstatt den gesamten Webtreibercode zu schreiben. –

Antwort

0

Go für die POM-Modell mit Encapsulation in einem place.Click gemacht werden. Im folgenden Beispiel habe ich eine Test-Setup-Klasse erstellt, die dann in allen Testklassen verwendet werden kann.

So wäre dies Sie TestSetup Class-

 using NUnit.Framework; 
    using OpenQA.Selenium; 
    using OpenQA.Selenium.Chrome; 
    using OpenQA.Selenium.Firefox; 
    using OpenQA.Selenium.IE; 



    namespace dummy 
    { 
     [SetUpFixture] 
     public class TestSetup 
     { 
      public static IWebDriver driver; 


      [OneTimeSetUp] 
      public void testSetup() 
      { 

       if (driver == null) 
       { 
        //Local Tests 
        driver = new FirefoxDriver(); 

       } 
      } 


      public static bool IsElementPresent(By by) 
      { 
       try 
       { 
        driver.FindElement(by); 
        return true; 
       } 
       catch (NoSuchElementException) 
       { 
        return false; 
       } 
      } 

      [OneTimeTearDown] 
      public void TearDown() 
      { 
       driver.Quit(); 
      } 

     } 
    } 

Und Unten können Sie Testcase-Klasse sein. Beachten Sie, dass Sie nur das Testsetup aufrufen. Ihre Testklasse erbt also alle Funktionen von der Primären Klasse - TestSetup

using System; 
using OpenQA.Selenium; 
using NUnit.Framework; 
using System.Threading; 

namespace dummy 
{ 
    [TestFixture] 
    [Parallelizable] 
    public class TESTCASE 
    {   

     IWebDriver driver = TestSetup.driver; 

     [Test] 

     public void siteVisit() 
     { 
      driver.Navigate().GoToUrl("http://google.com"); 
      Assert.IsTrue(String.Equals("Google, driver.Title)); 

     } 

    } 
} 
+0

Danke Rahul..ich werde es sicherlich versuchen und lassen Sie es wissen. –

0

Hallo, wenn ich verstanden habe es richtig dann gehen Sie bitte für POM (Page-Objekt-Framework)

1.The main advantage of Page Object Model is that if the UI changes for any page, it don’t 
require us to change any tests, we just need to change only the code within the page objects 
(Only at one place). 

2.Page Object model is writing all the functionalities/reusable components of a page that 
we want to automate in a separate class. 

3.As per google wiki Page object **"Within your web app’s UI there are areas that your tests 
interact with. A Page Object simply models these as objects within the test code. This 
reduces the amount of duplicated code and means that if the UI changes, the fix need only 
be applied in one place."** 

Example : google home page 

1.Say now if we consider our google home page as Home page. 
2.For the above pages we will create class as HomePage.class. 
3.In class we will identify and write reusable methods which are specific to Home page. 
4.'google home page' which will have many options like Search, Sign In, +You, Images etc. 
5.Now all functionalities that we want to automate should have reusable methods/components 
for each page. 
6.as our main page is google page we can navigate to other pages by clicking on any link 
from the google page. When ever we are navigating to other page, we need to return that page 
object. Else Return the current page object as this action doesn't navigate to a other page 
represented by another Page Object. 

Vorteile.

1.There is clean separation between test code and page specific code such as locators 
(or their use if you’re using a UI map) and layout. 
2.There is single repository for the services or operations offered by the page rather than 
    having these services scattered through out the tests. 

In beiden Fällen ermöglicht dies alle aufgrund erforderlichen Änderungen Änderungen an der Benutzeroberfläche alle für mehr auf POM

+0

Danke Raj - ich werde es versuchen und dich wissen lassen. –

+0

Ja sicher, wenn Sie Hilfe zu POM benötigen, zögern Sie nicht zu fragen –