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?
- 9333 megtekintés
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$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
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;
}
}
- A hozzászóláshoz be kell jelentkezni
Es mi van olyankor, amikor nem te ganyolsz kezzel, hanem Selenium IDE-ben klikkolod ossze a tesztet IE-hez, chrome-hoz?
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal - A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Sleep amig biztosan betolti az oldalt?
Ha az nem jo, akkor
if (chrome) { expect_click(); }Selenium az ilyen.
- A hozzászóláshoz be kell jelentkezni
Ha csak a Selenium lenne ilyen ...
- A hozzászóláshoz be kell jelentkezni
:-(
- A hozzászóláshoz be kell jelentkezni
"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…
- A hozzászóláshoz be kell jelentkezni
Köszönöm. Ez jobb megoldás.
Már csak egy gondom van az IE driver megakad az alábbi soron és nem hajlandó továbbmenni, bár a click az lefut:
driver.findElement(By.name("s")).click();
Ez az elem így néz ki:
input type="submit" name="s" value=" Keres "
- A hozzászóláshoz be kell jelentkezni
Nyomj egy entert barmelyik beviteli mezon (ami nem textarea), az ugyanugy elkuldi a formot.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal - A hozzászóláshoz be kell jelentkezni
- Úgy látom, hogy a Selenium IDE-ben generált kódot nem tudom egy az egyben felhasználni a Java-ban.
- Az IE-re a kerülő megoldás. Ha a .click()-eket kicserélem .SendKeys(Keys.Enter)-re.
- A hozzászóláshoz be kell jelentkezni
2) Ja, en is valami ilyesmit mondtam :-) De azert dolgozd korbe egy if(ie) -vel, hogy szaglodjon rola: workaround.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal - A hozzászóláshoz be kell jelentkezni
Írjatok még, ha van tapasztalat, nemsoká pont ezzel fogok küzdeni, kösz!
--
Gábriel Ákos
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
if(newwindowopened) { System.out.println("Nincs flash") } else { System.out.println("Flash!") }
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal - A hozzászóláshoz be kell jelentkezni
Köszi szépen az ENTER és ez is sokat segített. :-)
A Selenium IDE-s generálásról viszont úgy látom le kell mondanom. :-(
- A hozzászóláshoz be kell jelentkezni
Az igazi fejlesztok nem hasznalnak IDE-t :D
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal - A hozzászóláshoz be kell jelentkezni
A fentiek alapján én is így gondolom. :-)
- A hozzászóláshoz be kell jelentkezni