Wie die Umsetzung PhantomJS mit Selenium mit java WebDriver
Ich bin verrückt, wirklich. Ich habe diesen 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());
}
}
Nach der Ausführung bekomme ich diese Fehler während der Laufzeit, folgenden ist, dass die 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
Habe ich die phantomjs.exe zum Windows-Pfad hinzu, als externe Bibliothek die ghostdriver.jar aber nichts...
Es ist wie zwei Tage, die ich versuche zu machen, damit es funktioniert...
- Funktioniert es in einem anderen browser? Gibt es eine website oder HTML, die wir anschauen können?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser versuchen, bei mir hat es geklappt
dann den rest von Ihnen sind ähnlich..und pls kommentieren Sie Ihre Beobachtung ,haben Sie einen großen Tag 🙂
Stehe ich vor dem gleichen problem mit Ihnen. Kann ich den gleichen code mit FirefoxDriver, aber wenn ich es ändern zu PhantomJSDriver, brach es nach unten.
Können Sie versuchen, die FirefoxDriver statt PhantomJSDriver? Ändern Sie einfach
driver = new FirefoxDriver()
Eigentlich, wenn ich das Beispiel abändern, code von Selen, ändern Sie die firefox-Laufwerk zu phantonjs Treiber, es funktioniert gut. Keine Ahnung, was ist das problem mit phantomjs.
Ich vor demselben problem, wenn ich mit phantomjs 1.9.7 version. Ich denke, diese folgende version habe einige Problem. Bitte verwendet phantomjs 1.9.0 version. Dies ist die stabilere version.
Hier ist der download link:https://code.google.com/p/phantomjs/downloads/detail?name=phantomjs-1.9.0-windows.zip&can=4&q=
Laden Sie die aktuelle selenium-java bindings - 2.45. Dann entfernen Sie die 2.44 (oder was auch immer du verwendest) aus Ihrer Bibliothek.
Dann im code Folgendes:
HINWEIS* Die Position der .exe-Datei möglicherweise nicht in Ihrem C-Laufwerk, so dass Sie es zu genau haben Sie store phantom
Sollten Sie gut zu gehen, nachdem diese.