如何使用Java使用Selenium WebDriver实现PhantomJS

我真的要疯了。我有以下代码:

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());

}

}

执行后,我在运行时遇到这些错误,以下是该跟踪-

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

我已经将phantomjs.exe添加到Windows路径中,将ghostdriver.jar添加为外部库,但是什么也没有…

我想让它工作两天了…

回答:

DesiredCapabilities caps = new DesiredCapabilities();

caps.setJavascriptEnabled(true);

caps.setCapability("takesScreenshot", true);

caps.setCapability(

PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,

"your custom path\\phantomjs.exe"

);

WebDriver driver = new PhantomJSDriver(caps);

然后其余的类似。.并且请评论您的观察,祝您有美好的一天:)

以上是 如何使用Java使用Selenium WebDriver实现PhantomJS 的全部内容, 来源链接: utcz.com/qa/407454.html

回到顶部