I was trying to automate the hybrid app build using ionic2/Angular2 and typescript.
I am using C# for code writing. test are in BDD - specflow Versions: iOS:9.3.1 Xc
1) While access ios webview -- using getcontextHandles we can achieve
Set contextNames = idriver.getContextHandles();
System.out.println(contextNames);
for (String contextName : contextNames) {
if (contextName.contains("NATIVE_APP")) {
Reporter.log("Reaching to Native App", true);
idriver.context(contextName);
sleepfor(1000);
idriver.findElementByName("Open").click();
Reporter.log("Clicking Open to naviagte to Native APP", true);
}
else{
Reporter.log("Not found", true);
}
}
2) If above context doesn't work -- try to run iproxy run this in terminal -- ios_webkit_debug_proxy -c deviceID:27753 -d deviceID -- to get device id (instruments -s devices)
I think you have to Set up UICatalog in Appium
Copy this link in xcode : https://github.com/appium/ios-uicatalog
Search the repository where we have the UICatalog.app installed Users/Library/Developer/Xcode/DerivedData/UICatalog-bhmtevqhmgarbcgnqybxttbkqfvn/Build/Products/Debug-iphonesimulator/UICatalog.app
Try and use the following code to switch contexts :
var contextNames = driver.GetContexts(); //correction to your code
driver.SetContext(contextNames[1]);
You don't necessarily need the following capability while using appium :
capabilities.SetCapability("browserName", "iOS"); //can be removed from code as well
I am guessing you might be trying to use Appium Inspector along with running/debugging your tests. In which case you might not be able to use both the instances. Please look into the appium server logs for details on this.