Keresztböngészős selenium teszt hogyan?

Fórumok

Már egy ideje keresek megoldást a fentire, de nem szeretne valahogy működni.
Jelenleg a Selenium IDE programmal felveszem a tesztet, majd FireFox-ban simán le is futnak.
Innen kiexportálom java-ba. Chrome-ra és IE-re is kibővítem. De itt, hol az egyik hol a másik browser nem működik a webdriverrel. Ráadásul sokkal lassabb is, mint Firefox pluginból futtatva.

Van valakinek működőképes megoldása?

Hozzászólások

A szoftverfejlesztes egyik aranyszabalya: ha "nem működik", probalj debuggolni! ;^)

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"

Ok. Úgy látom nem érthető a jelenség. Megpróbálom kifejteni egy példaprogrammal. A kód szépségét most ne nézzétek, annak is örülnék első körben, ha működne.

A lényeg a FirefoxDiver lefut.
A Chrome eredetileg mindig kiakadt, ha a driver.findElement(By.name("s")).click();-nél, hogy nem található. Ezért raktam be a ExpectedConditions.elementToBeClickable(new ByName("s"));, mert úgy látszik nem várta meg, hogy felépüljön az oldal, hanem egyből klikkelt. Most viszont IE alatt nem működik. Az IE egyszerűen megáll és vár és vár az ExpectedConditions.elementToBeClickable(new ByName("s")); soron. Előtte viszont működött.


import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.By.ByLinkText;
import org.openqa.selenium.By.ByName;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;

public class DzTestSuite {
    private static WebDriver driver;
    private static String baseUrl = "http://localhost";

    public static void main(String[] args) {
        WebDriver[] drivers = {new ChromeDriver(), new FirefoxDriver(), new InternetExplorerDriver()};;
        for (WebDriver webDriver : drivers) {
            driver = webDriver;
            Logger.getLogger(DzTestSuite.class.getName()).log(Level.INFO,driver.toString());
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            runTests();
            driver.quit();
        }
    }

    private static void runTests() {
        testHistory();
    }

    private static void testHistory() {
        driver.get(baseUrl + "/magyar-angol-szotar/");
        driver.findElement(By.name("w")).clear();
        driver.findElement(By.name("w")).sendKeys("a");
        ExpectedConditions.elementToBeClickable(new ByName("s")); 
        driver.findElement(By.name("s")).click();
        ExpectedConditions.elementToBeClickable(new ByLinkText("the")); 
        driver.findElement(By.linkText("the")).click();
        driver.findElement(By.cssSelector("a[title=\"magyar-angol-szotar\"]")).click();
        try {
            Assert.assertTrue(verifyTextPresent("the"));
        } catch (InterruptedException ex) {
            Logger.getLogger(DzTestSuite.class.getName()).log(Level.SEVERE, null, ex);
        }
        Logger.getLogger(DzTestSuite.class.getName()).log(Level.INFO, "testHistory Finished");
    }

    private static boolean verifyTextPresent(String text) throws InterruptedException {
        long end = System.currentTimeMillis() + 5000;
        while (System.currentTimeMillis() < end) {
            if (driver.findElements(By.xpath("//*[contains(text(),\"" + text + "\")]")).size() > 0) {
                return true;
            }
            Thread.sleep(1000);
        }
        return false;
    }
}

Igen, úgy kezdtem, hogy azt próbáltam futtatni. A FirefoxDriverrel gond nélkül lefutott, majd kiakadt a ChromeDriver és az IE is. Az IE-t rendbe raktam. Majd amikor a Chrome-ot rendbe raktam akkor meg az IE a fentieket produkálta.

Gondoltam nem lehet ennyire bugos, így inkább megkérdeztelek Titeket, hátha gányolás nélkül is működne ez valahogy.

"mert úgy látszik nem várta meg, hogy felépüljön az oldal,"

eheh, hát igen :)
van külön Wait infrastruktúra, mertugye adott böngészőket használja (és nem emulálja), így némelyik blokkol amíg kész nem lesz, némelyik meg nem, és szerintem ebbe futottál bele.

http://seleniumhq.org/docs/04_webdriver_advanced.html
http://stackoverflow.com/questions/5868439/wait-for-page-load-in-seleni…

Írjatok még, ha van tapasztalat, nemsoká pont ezzel fogok küzdeni, kösz!

--
Gábriel Ákos

Hogyan tesztelnétek a flash tartalmat?
Tehát van egy flashem az oldalon, amely hangot játszik le, ha rákattintok egy ikonra. Ha nincs flash telepítve, akkor meg megnyitja új ablakban az mp3-at.
Most volt pont egy gondom, hogy minden más böngésző kezelte, de a legutóbbi Chrome nem a flasht.