( yoursoft | 2012. 08. 29., sze – 17:13 )

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;
    }
}