Πώς να κάνει webdriver να μην κλείσετε το παράθυρο του προγράμματος περιήγησης μετά από κάθε δοκιμή;

ψήφοι
3

Είμαι νέος σε τόσο σελήνιο WebDriver και Java. Έχω κάποιες webservices στο site μου στη σελίδα /someservice.php. Έχω γράψει μερικές δοκιμές για Selenuim και δουλεύουν μια χαρά. Κωδικός παράδειγμα (κύρια κατηγορία):

    public class SiteClass {
    static WebDriver driver;
    private static boolean findElements(String xpath,int timeOut ) {
public static void open(String url){
        //Here we initialize the firefox webdriver
        driver=new FirefoxDriver();
        driver.get(url);
    }
    public static void close(){
        driver.close();
    }
            WebDriverWait wait = new WebDriverWait( driver, timeOut );
            try {
                if( wait.until( ExpectedConditions.visibilityOfElementLocated( By.xpath( xpath ) ) ) != null ) {
                    return true;
                } else {
                    return false;
                }
            } catch( TimeoutException e ) {
                return false;
            }}
    public static Boolean CheckDiameter(String search,String result){
          driver.findElement(By.xpath(//input[@id='search_diam'])).sendKeys(search);
          WebDriverWait wait = new WebDriverWait(driver, 5);
          WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(//div[@class='ac_results'][last()]/ul/li)));
          WebElement searchVariant=driver.findElement(By.xpath(//div[@class='ac_results'][last()]/ul/li));
          Actions action = new Actions(driver);
          action.moveToElement(searchVariant).perform();
          driver.findElement(By.xpath(//li[@class='ac_over'])).click();
          Boolean iselementpresent = findElements(result,5);
          return iselementpresent;
      }
    }

Κωδικός Παράδειγμα (κλάση Test)

    @RunWith(Parameterized.class)
public class DiamTest {@Parameters
    public static Collection<Object[]> diams() {
        return Arrays.asList(new Object[][] {
            { 111, //div[@class='jGrowl-message'],true},
            { 222, //div[@class='jGrowl-message'],false},
            { 333, //div[@class='jGrowl-message'],true},
        });
    }
    private String inputMark;
    private String expectedResult;
    private Boolean assertResult;

    public DiamTest(String mark, String result, boolean aResult) {
        inputMark=mark;
        expectedResult=result;
        assertResult=aResult;
    }

    @BeforeClass
    public static void setUpClass() {
    }

    @AfterClass
    public static void tearDownClass() {
    }

    /**
     * Test of CheckDiameter method, of class CableRu.
     */
    @Test
    public void testCheckDiameter() {
        SiteClass obj=new SiteClass();
         obj.open(http://example.com/services.php);
        assertEquals(assertResult, obj.CheckDiameter(inputMark, expectedResult));
        obj.close();
    }

}

Τώρα έχω 2 τεστ σαν αυτό με 3 παραμέτρους το καθένα (σύνολο 6 παραλλαγές). Όπως μπορείτε να δείτε σε κάθε παραλλαγή μπορώ να δημιουργήσω νέο παράθυρο του προγράμματος περιήγησης και όταν τρέχω όλες τις 6 παραλλαγές που παίρνουν πάρα πολύ χρόνο (μέχρι 80 δευτερόλεπτα).

Πώς μπορώ να τρέξει όλες τις παραλλαγές σε ένα παράθυρο του προγράμματος περιήγησης για να επιταχύνει τις δοκιμές μου;

Δημοσιεύθηκε 22/04/2015 στις 05:38
χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
1

Απλά μετακινήστε το περιεχόμενο του δημόσια στατική άκυρη κοντά () μέθοδο από SiteClass σας για να tearDownClass (μέθοδος) στην DiamTest τάξη. Με τον τρόπο αυτό το παράθυρο του browser θα κλείσει όταν η εκτέλεση τάξη τελειώσει (λόγω της @AfterClass σχολιασμού). Ο κωδικός σας τότε θα πρέπει να μοιάζει κάπως έτσι:

//DiamTest class
@AfterClass
    public static void tearDownClass() {
        driver.close();
    }

Είναι επίσης μια καλή πρακτική για να μετακινήσετε το παράθυρο του προγράμματος περιήγησης προετοιμασίας για setUpClass () μέθοδο η οποία θα εκτελεστεί πριν από κάθε κατηγορία δοκιμών (σύμφωνα με @BeforeClass σχολιασμού)

//DiamTest class
@BeforeClass
    public static void setUpClass() {
        //Here we initialize the firefox webdriver
        driver=new FirefoxDriver();
        driver.get(url);
    }
Απαντήθηκε 22/04/2015 στις 06:32
πηγή χρήστη

ψήφοι
0

Τι πρέπει να κάνετε είναι να μοιραστείτε την κατηγορία βοήθειά σας με όλες τις δοκιμές σας, αυτό σημαίνει, θα πρέπει να δημιουργήσετε ένα στιγμιότυπο της SiteClass μέσα σας setUpClass μέθοδο. Αυτή η μέθοδος είναι σχολιασμένη με @BeforeClass εξασφαλίζοντας τάξη τεστ θα δημιουργήσει αυτή η μέθοδος θα εκτελεστεί πριν να εκτελεστούν όλα τα τεστ.

Μπορείτε να διαβάσετε περισσότερα για @BeforeClass σε JUnit doc : ή έχουν μια απλή επισκόπηση σε αυτήν την απάντηση.

Θα πρέπει επίσης να κάνουμε κάποια ξαναγράψει λίγο κώδικα για να επιτρέψει το μερίδιο του οδηγού με το άλλο τεστ, κάτι σαν αυτό:

    @RunWith(Parameterized.class)
    public class DiamTest {

            @Parameters
        public static Collection<Object[]> diams() {
            return Arrays.asList(new Object[][] {
                { "111", "//div[@class='jGrowl-message']",true},
                { "222", "//div[@class='jGrowl-message']",false},
                { "333", "//div[@class='jGrowl-message']",true},
            });
        }
        private String inputMark;
        private String expectedResult;
        private Boolean assertResult;

        private static SiteUtil siteUtil; 

        public DiamTest(String mark, String result, boolean aResult) {
            inputMark=mark;
            expectedResult=result;
            assertResult=aResult;
        }

        @BeforeClass
        public static void setUpClass() {
            siteUtil = new SiteUtil();
        }

        @AfterClass
        public static void tearDownClass() {
            siteUtil.close();
        }

        @Test
        public void testCheckDiameter() {
            siteUtil.open("http://example.com/services.php");
            assertEquals(assertResult, obj.CheckDiameter(inputMark, expectedResult));
        }

    }

και:

    public class SiteClass {
            static WebDriver driver;

            public SiteClass() {
                driver = new FirefoxDriver();
            }

            public void open(String url){
                driver.get(url);
            }

            ...

Συμβουλή: Μπορείτε να διαβάσετε για το TestPyramid .

Από λειτουργικές δοκιμασίες είναι ακριβά, θα πρέπει να νοιάζονται για το τι είναι πραγματικά απαραίτητο τεστ. Αυτό το άρθρο είναι για το θέμα αυτό.

Απαντήθηκε 22/04/2015 στις 06:46
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more