Please see my testcase and pages below-
TestCase:
public class SampleTest {
private IOSDriver driver;
private ImageInfoPage infoPage;
private EditImageDescriptionPage descPage;
private EditImageTitlePage titlePage;
@Before
public void setUp() throws Exception{
driver=AppurifyUtil.getDriver();
}
@Test
public void testApp() throws Exception{
Thread.sleep(10000);
infoPage=new ImageInfoPage(driver);
titlePage=infoPage.clickEditTitleBtn();
titlePage.setCaptionEdit("Hoola");
infoPage=titlePage.clickDoneBtn();
Thread.sleep(3000);
**descPage=infoPage.clickEditDescriptionBtn();**//Error is happening here
descPage.setCaptionEdit("Hooooooola");
descPage.clickDoneBtn();
Thread.sleep(5000);
}
}
Pages:
ImageInfoPage
public class ImageInfoPage extends AbstractPage{
public ImageInfoPage(IOSDriver driver) {
super(driver);
loadPage();
}
@iOSFindBy(name = "Edit TITLE")
private WebElement btnEditTitle;
@iOSFindBy(name = "Edit DESCRIPTION")
private WebElement btnEditDescription;
@iOSFindBy(name = "Edit PRIVACY")
private WebElement btnEditPrivacy;
@iOSFindBy(name = "Edit PEOPLE IN THIS PHOTO")
private WebElement btnEditPeople;
public EditImageTitlePage clickEditTitleBtn(){
btnEditTitle.click();
return new EditImageTitlePage(driver);
}
public EditImageDescriptionPage clickEditDescriptionBtn(){
btnEditDescription.click();
return new EditImageDescriptionPage(driver);
}
}
#EditImageTitlePage
public class EditImageTitlePage extends AbstractPage{
public EditImageTitlePage(IOSDriver driver) {
super(driver);
loadPage();
}
@iOSFindBy(name = "Close")
private WebElement btnClose;
@iOSFindBy(name = "Edit Title")
private WebElement txtTitle;
@iOSFindBy(name = "Done")
private WebElement btnDone;
@iOSFindBy(name = "Caption")
private WebElement editCaption;
public ImageInfoPage clickCloseBtn(){
btnClose.click();
return new ImageInfoPage(driver);
}
public boolean verifyTitleTxt(){
return txtTitle.isDisplayed();
}
public ImageInfoPage clickDoneBtn(){
btnDone.click();
return new ImageInfoPage(driver);
}
public void setCaptionEdit(String txtTitle){
editCaption.clear();
editCaption.sendKeys(txtTitle);
}
public String getCaptionEditText(){
return editCaption.getAttribute("value");
}
public void clearCaptionEdit(){
editCaption.clear();
}
public boolean verifyCaptionEdit(String newTitle){
return editCaption.getAttribute("value").equals(newTitle);
}
}
#EditImageDescriptionPage
public class EditImageDescriptionPage extends AbstractPage{
public EditImageDescriptionPage(IOSDriver driver) {
super(driver);
loadPage();
}
@iOSFindBy(name = "Close")
private WebElement btnClose;
@iOSFindBy(name = "Edit Description")
private WebElement txtDescription;
@iOSFindBy(name = "Done")
private WebElement btnDone;
@iOSFindBy(name = "Caption")
private WebElement editCaption;
public ImageInfoPage clickCloseBtn(){
btnClose.click();
return new ImageInfoPage(driver);
}
public boolean verifyTitleTxt(){
return txtDescription.isDisplayed();
}
public ImageInfoPage clickDoneBtn(){
btnDone.click();
return new ImageInfoPage(driver);
}
public void setCaptionEdit(String txtTitle){
editCaption.clear();
editCaption.sendKeys(txtTitle);
}
public String getCaptionEditText(){
return editCaption.getAttribute("value");
}
public void clearCaptionEdit(){
editCaption.clear();
}
public boolean verifyCaptionEdit(String newTitle){
return editCaption.getAttribute("value").equals(newTitle);
}
}
Here is the error log trace-
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at io.appium.java_client.pagefactory.ElementInterceptor.intercept(ElementInterceptor.java:27)
at org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$33890cdb.click()
at pages.ImageInfoPage.clickEditDescriptionBtn(ImageInfoPage.java:35)
at tests.SampleTest.testApp(SampleTest.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
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:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.38 seconds
Build info: version: ‘2.44.0’, revision: ‘76d78cf’, time: ‘2014-10-23 20:02:37’
System info: host: ‘gentleknow-lm’, ip: ‘10.75.154.235’, os.name: ‘Mac OS X’, os.arch: ‘x86_64’, os.version: ‘10.10.1’, java.version: ‘1.8.0_25’
Driver info: io.appium.java_client.ios.IOSDriver
Capabilities [{networkConnectionEnabled=false, warnings={}, bundleId=com.yahoo.flickr, databaseEnabled=false, deviceName=iPhone, platform=MAC, desired={newCommandTimeout=60, platformVersion=8.1, automationName=Appium, bundleId=com.yahoo.flickr, udid=5e66e1067a0afea89be55a2d06322a98344023bb, platformName=iOS, deviceName=iPhone}, newCommandTimeout=60, platformVersion=8.1, webStorageEnabled=false, locationContextEnabled=false, automationName=Appium, browserName=iOS, takesScreenshot=true, javascriptEnabled=true, udid=5e66e1067a0afea89be55a2d06322a98344023bb, platformName=iOS}]
Session ID: 62de2267-c168-4b7b-890d-312db60a0a7f
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
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:599)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:180)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79)
… 32 more