cas de test de réseau Sélénium échoué en mode navigateur sans tête necas de test du navigateur sans tête a échoué - grille selemium
mode Navigateur normal [Succès Test]
- sélénium se serveur seul: 3.0.1
- Firefox: 38.0.1
- ip: 192.168.1.40
Navigateur Headless mode [Echec du test]
- sélénium support serveur autonome: 3.0.1
- Firefox: 38,0
- ip: 172.18.0.60
je lance le navigateur sans tête comme ci-dessous
xvfb-exécuter java -Dwebdriver.firefox.marionette = "/ tmp/geckodriver" -Dwebdriver.firefo x.bin = "/ tmp/firefox/firefox" jar sélénium serveur autonome-3.0.1.jar -role WebDriver -hub http://192.168.1.106:4444/grid/register -port 5566 -host 172.18.0.60
essai Code de cas:
package example;
import org.junit.Assert;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import java.net.MalformedURLException;
public class NewTest
{
public WebDriver driver;
public String URL, Node;
private JavascriptExecutor jse;
private String baseUrl;
protected ThreadLocal<RemoteWebDriver> threadDriver = null;
@Parameters({"browser","url"})
@BeforeTest
public void launchapp(String browser,String url) throws MalformedURLException
{
baseUrl = "http://myhost";
if (browser.equalsIgnoreCase("firefox"))
{
System.out.println(" Executing on FireFox");
String Node = url;
DesiredCapabilities cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
driver = new RemoteWebDriver(new URL(Node), cap);
// Puts an Implicit wait, Will wait for 10 seconds before throwing exception
driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(baseUrl);
driver.manage().window().maximize();
}
else
{
throw new IllegalArgumentException("The Browser Type is Undefined");
}
jse = (JavascriptExecutor)driver;
}
@Test
public void functionalityTest() throws InterruptedException
{
driver.findElement(By.linkText("Sign In")).click();
driver.findElement(By.id("email")).clear();
driver.findElement(By.id("email")).sendKeys("[email protected]");
driver.findElement(By.id("pass")).clear();
driver.findElement(By.id("pass")).sendKeys("xxxxxx");
driver.findElement(By.id("send2")).click();
jse.executeScript("scroll(0, 250);");
driver.findElement(By.cssSelector(".customerlink a")).click();
Thread.sleep(1000);
driver.findElement(By.linkText("My Account")).click();
Thread.sleep(2000);
jse.executeScript("scroll(0, 250);");
Thread.sleep(1000);
jse.executeScript("scroll(0, -250);");
Thread.sleep(2000);
driver.findElement(By.cssSelector(".customerlink a")).click();
Thread.sleep(1000);
driver.findElement(By.linkText("Sign Out")).click();
Thread.sleep(2000);
}
@AfterTest
public void closeBrowser()
{
driver.quit();
}
}
Je suis exception dans toute première ligne de mode brwoser sans tête
07:16:53.571 INFO - Executing: [new session: Capabilities [{marionette=true, browserName=firefox, version=, platform=ANY}]])
07:16:53.580 INFO - Creating a new session for Capabilities [{marionette=true, browserName=firefox, version=, platform=ANY}]
07:17:00.268 INFO - Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
07:17:02.648 INFO - Detected dialect: OSS
07:17:02.665 INFO - Done: [new session: Capabilities [{marionette=true, [email protected]0c, browserName=firefox, moz:[email protected]0c, version=, platform=ANY}]]
07:17:02.701 INFO - Executing: [implicit wait: 50000])
07:17:02.717 INFO - Done: [implicit wait: 50000]
07:17:02.724 INFO - Executing: [get: http://myhost])
07:18:03.564 INFO - Done: [get: http://myhost]
07:18:03.570 INFO - Executing: [maximise window])
07:18:03.580 INFO - Done: [maximise window]
07:18:03.593 INFO - Executing: [find element: By.linkText: Sign In])
07:18:53.917 WARN - Exception thrown
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Sign In"}
comme
L'état d'erreur clairement incapable de localiser l'élément, mais comment il a fonctionné en mode normal?
Existe-t-il une restriction dans le code pour utiliser le mode navigateur sans écran?
Puis-je savoir où dans ce qui précède, vous utilisez le concept de "navigateur sans tête"?Pour autant que je sache, le navigateur sans tête est implémenté dans "HtmlUnitDriver" et peut être NodeJSDriver (ce que je n'ai pas encore essayé). Est-ce que je manque un concept ici? – Uday
mon pote, moi aussi nouveau! Je crois que le mode sans tête est exécuté test de sélénium sans interface utilisateur du navigateur. Mon navigateur fonctionne sur xvfb au lieu du mode UI, donc je crois que c'est le mode sans tête. pour votre référence facile http://agiletesting.blogspot.in/2016/01/running-selenium-webdriver-tests-using.html –
On dirait que ce xvfb fonctionne dans un environnement Linux/Ubuntu et non sous Windows. Found xnest est aussi pour Linux/Ubuntu env. Trouvé ce lien 'http://stackoverflow.com/questions/944086/is-there-anything-like-xvfb-or-xnest-for-windows' pour la version de Windows. – Uday