2

j'ai écrit un test Selenium avec java que je lançais avec le FirefoxDriver et il exécute bien dans le navigateur Firefox.pilote HtmlUnit a du mal avec Javascript

Puis je remplace FirefoxDriver avec HtmlunitDriver comme ceci:

driver = new FirefoxDriver(); 

avec

driver = new HtmlUnitDriver(true); 

Mais j'eu cette erreur:

Il manque ';' Avant une instruction (http://local.project/bundles/app/js/socket.js#1)

Ceci est le fichier socket.js:

class SocketHandler { 
    constructor(url) { 
     this.url = url; 
     this.session = null; 
    } 

    .... 
} 

Je pense qu'il ne reconnaît pas la déclaration de classe. Une idée de comment corriger cela s'il vous plaît?

+0

Pourquoi vous voulez utiliser le HtmlUnitDriver? –

+0

@TarunLalwani Parce qu'il utilise moins de ressources que firefox – Mit94

+0

Mieux vaut alors utiliser PhantomJS. 'HtmlUnitDriver' n'est pas le meilleur pilote compatible pour les tests. –

Répondre

1

Vous n'avez même pas besoin d'utiliser PhantomJs. Comme PhantomJs n'est pas tellement maintenir ces jours. Vous pouvez utiliser le chromedriver en mode sans tête.

il vous suffit d'ajouter des options comme sans tête comme ci-dessous: -

chromeOptions.addArguments("--headless"); 

S'il vous plaît trouver le code complet ci-dessous:

System.setProperty("webdriver.chrome.driver","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\chromedriver.exe"); 
ChromeOptions chromeOptions = new ChromeOptions(); 
chromeOptions.addArguments("--headless"); 
chromeOptions.addArguments("--start-maximized"); 
WebDriver driver = new ChromeDriver(chromeOptions); 
driver.get("https://google.com"); 

Alors que si vous souhaitez toujours utiliser PhantomJS. puis premier téléchargement PhantomJS binaire en bas emplacement: -

http://phantomjs.org/download.html

utiliser maintenant ci-dessous le code: -

System.setProperty("phantomjs.binary.path","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\phantomjs\\phantomjs.exe"); 
DesiredCapabilities capabilities = null; 
ArrayList<String> cliArgsCap = new ArrayList<String>(); 
capabilities = DesiredCapabilities.phantomjs(); 
cliArgsCap.add("--web-security=false"); 
cliArgsCap.add("--ssl-protocol=any"); 
cliArgsCap.add("--ignore-ssl-errors=true"); 
capabilities.setCapability("takesScreenshot", true); 
capabilities.setJavascriptEnabled(true); 
capabilities.setCapability(
PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap); 
capabilities.setCapability(
PhantomJSDriverService.PHANTOMJS_GHOSTDRIVER_CLI_ARGS,new String[] { "--logLevel=2" }); 
driver = new PhantomJSDriver(capabilities); 
driver.get("https://www.google.co.in/"); 

espère que cela vous aidera :)

+0

Merci, c'était vraiment utile. Je suis en train de faire un test de chargement avec Selenium et même en mode sans tête je ne peux pas mettre plus de 50 navigateurs avant que mon ordinateur ne commence à "retarder". Savez-vous s'il y a plus d'options chrome que ce que vous pouvez utiliser pour "éclaircir" le navigateur? Ou si ça vaut le coup de passer à PhantomJS? J'ai besoin d'atteindre 80 navigateurs simultanément. – Mit94

+0

Oui, vous pouvez essayer avec phantomjs .. vous pouvez également aller pour le concept de grille de sélénium où votre hôte enverra des instructions à la machine esclaves .. donc en utilisant la grille, vous avez besoin de 2 machines qui exécutera 40 instance chaque –