org.openqa.selenium.SessionNotCreatedException on maven / appium to launch an android application - eclipse

i am trying to launch an calculator app on my android device using appium on mac.
I cap all the details and then I am calling the webdriver to start the application.
But I get this error.
Image of an error
This is my class code:
public class calculator_firsttest {
public static WebDriver driver;
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
openCalculator();
} catch (Exception e) {
System.out.println(e.getCause());
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public static void openCalculator( ) throws Exception{
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("deviceName", "Galaxy A32");
cap.setCapability("udid", "RF8RB0H517K");
cap.setCapability("platformName", "Android");
cap.setCapability("platformVersion", "11");
cap.setCapability("appPackage", "com.sec.android.app.popupcalculator");
cap.setCapability("appActivity", "com.sec.android.app.popupcalculator.Calculator");
URL url = new URL("http://127.0.0.1:4723/wd/hub");
driver = new RemoteWebDriver(url, cap);
System.out.println("App started.");
}
}
Thank you !

Related

How to recognize whether is it successfully find the values for the 'asserEquals' in Selenium(POM)?

Here mentioned code successfully passed by the test run.But it was not showed the login button click and the logged-user name.(I have try to print the messages by try-catch ).but result shows as passed without those messages.
I just wanted to why can't I see the button click and assertEqual messages?
is there any coding issue or practice should be able to use to overcome this?
I have used the xml file to send the browser type.Further,I pasted only the relevant code sections.
1.TestCommands.java
public class TestCommands {
public void assertText(By locator,WebDriver driver,String expectedValue){
try {
WebElement element = driver.findElement(locator);
assertEquals(element.getText(), expectedValue);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
System.out.println("Not equal");
}
System.out.println("Equal");
System.out.println("captured web element: "+ locator);
System.out.println("captured expectedValue: "+ expectedValue);
}
}
2.LoginPage.java
public class LoginPage extends TestCommands{
public void loginToApplication(WebDriver driver,String userName,String password,String loggedUser){
type(userName(),driver,userName);
type(password(),driver,password);
click(loginButton(),driver);
selectByVisibleText(loggedUser(),driver,loggedUser);
}
3.TC_LoginToTest.java
public class TC_LoginToTest {
WebDriver driver ;
String baseUrl;
LoginPage login = new LoginPage();
#Parameters("browser")
#BeforeMethod
public void beforeMethod(String browser) {
if (browser.equals("firefox")) {
System.setProperty("webdriver.gecko.driver", "drivers\\geckodriver.exe");
driver = new FirefoxDriver();
//baseUrl = "https://test.com";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} else if (browser.equals("chrome")) {
System.setProperty("webdriver.chrome.driver", "drivers\\chromedriver.exe");
driver = new ChromeDriver();
//baseUrl = "https://test.com";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
}
#DataProvider
public Object[][] tc001() {
return new Object[][] {
new Object[] {"nadee","12345678","Testnadee"},
};
}
#Test(dataProvider="tc001")
public void tc001(String userName , String password ,String loggedUser) {
login.openApplication("https://test.com", driver);
login.loginToApplication(driver, userName, password, loggedUser);
}
}

How to find elements in webview in android using appium

I am new in automation testing . I am trying to find elements in webview in Android app using appium .
Below is code i am using but I am not able to find say div using its id
private AppiumDriver<WebElement> driver;
#Before
public void setUp() throws Exception {
// set up appium
}
#After
public void tearDown() throws Exception {
driver.quit();
}
#Test
public void webView() throws InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("appPackage", "com.hokucampusaffairs");
capabilities.setCapability("appActivity", "com.mybeeps.DashboardActivity");
try {
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Thread.sleep(6000);
Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
System.out.println(contextName);
if (contextName.contains("WEBVIEW")){
driver.context(contextName);
}
}
String pagesource= driver.getPageSource();
String url= driver.getCurrentUrl();
try {
WebElement inputField = **driver.findElement(By.id("top-container"));**
inputField.click();
}
catch(Exception e)
{
e.printStackTrace();
}
}
Code in bold is not finding div using its id . Also findelementbyTag is only finding parent elements .
I am using latest version of appium /Android sdk/java 1.8
Exception gives you the answer - no element found with id='top-container'
Make sure you switch driver to webview
Try other locator strategies, e.g. Xpath
For webview inspection you can use chrome dev tools: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews

Eclipse Project dependencies dont work when exported

I am currently facing following big problem:
I have a Framework-Project (maven), where a PropertyReader is included (reads "config.properties" in the same package and returns its values):
This is the Framework-Project:
public class PropertyReaderFramework {
private static Properties props;
private static void init(){
String filename = "com/ks/framework/properties/config.properties";
InputStream input = PropertyReaderFramework.class.getClassLoader()
.getResourceAsStream(filename);
if (input == null) {
System.out.println("Sorry, unable to find " + filename);
props = null;
} else {
props = new Properties();
}
try {
props.load(input);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getProperty(String key){
if(props == null) init();
return props.getProperty(key);
}
public static Properties getProperties(){
if(props == null) init();
return props;
}
}
And my main-project, where I need the information of the properties-file just has one class (for demonstation):
package testmsg;
import com.ks.framework.properties.PropertyReaderFramework;
public class main {
public static void main(String[] args) throws InterruptedException {
try {
String basepath = PropertyReaderFramework.getProperty("remoteFileAccess.script.location");
System.out.println(basepath);
} catch (Exception e) {
e.printStackTrace();
} finally {
Thread.sleep(5000);
}
}
}
The funny thing is, that if I execute the main() class in eclipse, it reads the value from the properties correctly.
But when I export it as a runnable JAR, it throws me following error:
Can anyone help me to solve this problem? I cannot figure out why it behaves like that...

javax.microedition.io.ConnectionNotFoundException: error 10061 in socket::open

javax.microedition.io.ConnectionNotFoundException: error 10061 in socket::open
I have this error with j2me - in execution.
I tried searching, but it didn't help.
Code:
Connector.open("socket://127.0.0.1:7777")
According to ConnectionNotFoundException documentation "This class is used to signal that a connection target cannot be found, or the protocol type is not supported".
socket is a supported protocol, so the connection target cannot be found. Be sure that 127.0.0.1:7777 is up, running and that is does support receiving a Socket connection.
You may try below Java code:
public class Server {
static boolean done = false;
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(7777);
while (!done) {
final Socket socket = server.accept();
new Thread() {
public void run() {
treatSocket(socket);
}
}.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
static void treatSocket(Socket socket) {
// treat socket data
}
}

HtmlUnit on webserver: method <init>()V not found

I've managed to run the code in this question here properly in a test java project with no problem, but when I am following the exact same procedure to import HtmlUnit in my webserver, i keep getting the org.apache.http.protocol.BasicHttpContext: method <init>()V not found error.
the code im trying to run:
package com.testing;
import java.io.IOException;
import java.net.MalformedURLException;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
public class testingUnit {
public static void main(final String[] args) {
final WebClient webClient = new WebClient();
webClient.setTimeout(1000);
try {
System.out.println("Querying");
webClient.getPage("https://bulksms.vsms.net/register/");
System.out.println("Success");
} catch (final FailingHttpStatusCodeException e) {
System.out.println("One");
e.printStackTrace();
} catch (final MalformedURLException e) {
System.out.println("Two");
e.printStackTrace();
} catch (final IOException e) {
System.out.println("Three");
e.printStackTrace();
} catch (final Exception e) {
System.out.println("Four");
e.printStackTrace();
}
System.out.println("Finished");
}
}
Console:
Querying
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: method <init>()V not found
at org.apache.http.impl.client.AbstractHttpClient.createHttpContext(AbstractHttpClient.java:273)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:797)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:152)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1439)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1358)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:358)
at com.testing.testingUnit.main(testingUnit.java:16)
Figured it out after posting the screenshot here. I had totally forgot to update the web app libraries. I did that and deleted all the outdated versions of jars I had (in the webcontent/lib folder), and the code above worked like a charm. Cheers!