Comment mettre en œuvre PhantomJS avec Selenium WebDriver à l'aide de java
Je suis en train de devenir fou, vraiment. J'ai ce code:
public class Creazione extends TestCase {
private PhantomJSDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
File file = new File("C:/Program Files/phantomjs-1.9.7-windows/phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
driver = new PhantomJSDriver();
baseUrl = "http://www.gts.fiorentina.test/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl + "/Account/Login.aspx?ReturnUrl=%2f");
findDynamicElement(By.id("tbUserName_I"), 2000);
driver.findElement(By.id("tbUserName_I")).clear();
driver.findElement(By.id("tbUserName_I")).sendKeys("rogai");
driver.findElement(By.id("tbPassword_I")).clear();
driver.findElement(By.id("tbPassword_I")).sendKeys("Fiorentina2014!");
driver.findElement(By.id("btnLogin_CD")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testCreazione() throws Exception {
driver.get(baseUrl + "/SegreteriaSportiva/Calciatori.aspx");
findDynamicElement(By.cssSelector("#ASPxButton1_CD > span"), 2000);
driver.findElement(By.cssSelector("#ASPxButton1_CD > span")).click();
findDynamicElement(By.id("FrmEdit_TS_TipoPersonaId_FK_B-1"), 2000);
driver.findElement(By.id("FrmEdit_TS_TipoPersonaId_FK_B-1")).click();
driver.findElement(By.id("FrmEdit_TS_TipoPersonaId_FK_DDD_L_LBI2T0")).click();
driver.findElement(By.id("FrmEdit_Nome_I")).clear();
driver.findElement(By.id("FrmEdit_Nome_I")).sendKeys("Prova");
driver.findElement(By.id("FrmEdit_Cognome_I")).clear();
driver.findElement(By.id("FrmEdit_Cognome_I")).sendKeys("Calciatore");
driver.findElement(By.id("FrmEdit_TS_RuoloId_FK_B-1")).click();
driver.findElement(By.id("FrmEdit_TS_RuoloId_FK_DDD_L_LBI3T0")).click();
driver.findElement(By.id("FrmEdit_DataNascita_I")).clear();
driver.findElement(By.id("FrmEdit_DataNascita_I")).sendKeys("01/01/2014");
driver.findElement(By.id("FrmEdit_Cittadinanza_I")).clear();
driver.findElement(By.id("FrmEdit_Cittadinanza_I")).sendKeys("italiana");
driver.findElement(By.id("FrmEdit_LuogoNascita_I")).clear();
driver.findElement(By.id("FrmEdit_LuogoNascita_I")).sendKeys("roma");
driver.findElement(By.cssSelector("#BTN_Edit_CD > span")).click();
driver.findElement(By.id("Grid_DXFREditorcol3_I")).click();
driver.findElement(By.id("Grid_DXFREditorcol3_I")).sendKeys("Prova");
assertEquals("Prova",driver.findElement(By.xpath("//tr[@id='Grid_DXDataRow0']/td[3]")).getText());
}
}
Après l'exécution j'obtiens ces erreurs lors de l'exécution, suivant que trace ---
org.openqa.selenium.InvalidElementStateException: {"errorMessage":"Element is not currently interactable and may not be manipulated","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"27","Content-Type":"application/json; charset=utf-8","Host":"localhost:20497","User-Agent":"Apache-HttpClient/4.3.2 (java 1.5)"},"httpVersion":"1.1","method":"POST","post":"{\"id\":\":wdc:1402393987914\"}","url":"/clear","urlParsed":{"anchor":"","query":"","file":"clear","directory":"/","path":"/clear","relative":"/clear","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/clear","queryKey":{},"chunks":["clear"]},"urlOriginal":"/session/e4b71580-f084-11e3-959e-273aa801dd81/element/%3Awdc%3A1402393987914/clear"}}
Command duration or timeout: 215 milliseconds
Build info: version: '2.42.1', revision: '68b415a', time: '2014-05-29 16:17:18'
System info: host: 'Silvio-Acer', ip: '10.10.1.122', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'
Session ID: e4b71580-f084-11e3-959e-273aa801dd81
Driver info: org.openqa.selenium.phantomjs.PhantomJSDriver
Capabilities [{platform=XP, acceptSslCerts=false, javascriptEnabled=true, browserName=phantomjs, rotatable=false, driverVersion=1.1.0, locationContextEnabled=false, version=1.9.7, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=false, browserConnectionEnabled=false, webStorageEnabled=false, nativeEvents=true, proxy={proxyType=direct}, applicationCacheEnabled=false, driverName=ghostdriver, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:600)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.clear(RemoteWebElement.java:113)
at com.example.tests.Creazione.testCreazione(Creazione.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:255)
at junit.framework.TestSuite.run(TestSuite.java:250)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken
Build info: version: '2.42.1', revision: '68b415a', time: '2014-05-29 16:17:18'
System info: host: 'Silvio-Acer', ip: '10.10.1.122', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:136)
... 23 more
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: {"errorMessage":"Element is not currently interactable and may not be manipulated","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"27","Content-Type":"application/json; charset=utf-8","Host":"localhost:20497","User-Agent":"Apache-HttpClient/4.3.2 (java 1.5)"},"httpVersion":"1n.1","method":"POST","post":"{\"id\":\":wdc:1402393987914\"}","url":"/clear","urlParsed":{"anchor":"","query":"","file":"clear","directory":"/","path":"/clear","relative":"/clear","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/clear","queryKey":{},"chunks":["clear"]},"urlOriginal":"/session/e4b71580-f084-11e3-959e-273aa801dd81/element/%3Awdc%3A1402393987914/clear"}}
Build info: version: '2.42.1', revision: '68b415a', time: '2014-05-29 16:17:18'
System info: host: 'Silvio-Acer', ip: '10.10.1.122', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_55'
Driver info: driver.version: unknow
J'ai ajouté le phantomjs.exe pour le Chemin d'accès Windows, ajoute externe de la bibliothèque de l'ghostdriver.jar mais rien n'y fait...
C'est comme deux jours que je suis en train de le faire fonctionner...
Faut-il travailler dans un autre navigateur? Est-il un site web ou HTML que nous puissions regarder?
OriginalL'auteur Marvin | 2014-06-10
Vous devez vous connecter pour publier un commentaire.
Essayer cela, il a travaillé pour moi
puis reste d'entre eux sont similaires..et pls commentaire votre sens de l'observation ,une bonne journée 🙂
OriginalL'auteur Sankar
Je suis confronté au même problème avec vous. Je peux utiliser le même code avec FirefoxDriver, mais quand je l'ai changer pour PhantomJSDriver, il est tombé en panne.
Pouvez-vous essayer la FirefoxDriver au lieu de PhantomJSDriver? Il suffit de changer
driver = new FirefoxDriver()
En fait, si je modifie le code de l'exemple fourni par le sélénium, le changement firefox lecteur à phantonjs pilote, il fonctionne très bien. Aucune idée de ce qu'est le problème à l'aide de phantomjs.
OriginalL'auteur Freya Ren
Je fais face à un même problème lorsque j'ai été en utilisant phantomjs version 1.9.7. Je pense que, cette version suivants ont un problème. Veuillez utilisés phantomjs version 1.9.0. C'est la version plus stable.
Voici le lien de téléchargement:https://code.google.com/p/phantomjs/downloads/detail?name=phantomjs-1.9.0-windows.zip&can=4&q=
OriginalL'auteur user2982537
Télécharger la version la plus récente de sélénium java liaisons - 2.45. Ensuite, retirer le 2.44 (ou ce que vous utilisez) à partir de votre bibliothèque.
Puis inclure les éléments suivants dans votre code:
REMARQUE* L'emplacement de l' .exe peut ne pas être dans votre disque C, de sorte que vous pointez-exactement que vous avez magasin fantôme
Vous devriez être bon d'aller.
OriginalL'auteur Kyle B.