I am doing a POC on Appium with Salesforce 1 app.
Device Nexus 6
Android verison 6
Appium Version 1.6.5
app can downloaded from this link https://s3.amazonaws.com/bindupeteti/salesforce1.apk
After clicking the Iagree button on th etop right corner, from the automation code, I am seeing a blank HTML page source. but in the virtual device, login screen is seen. The issue actually happens after switching from native view to Webview in Salesfore1 app.
I request you to please help me in this.
My Java Appium Code
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.mozilla.javascript.Context;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.amazonaws.services.budgets.model.TimeUnit;
import io.appium.java_client.MobileBy.ByAndroidUIAutomator;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.pagefactory.AndroidFindBy;
/**
- @author Bindu
*/
public class Nexus6 {
/**
* @param args
* @throws MalformedURLException
*/
public static void main(String[] args) throws MalformedURLException {
File appDir = new File("C://Users//Bindu//Documents//Bindu Work//Software//Appium");
File app = new File(appDir, "Salesforce1.apk");
new DesiredCapabilities();
DesiredCapabilities capabilities = DesiredCapabilities.android();
capabilities.setCapability("device", "Android Emulator");
// capabilities.setCapability("browserName", "chrome");
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.SUPPORTS_NETWORK_CONNECTION, true);
capabilities.setCapability(CapabilityType.SUPPORTS_WEB_STORAGE, true);
// mandatory capabilities
capabilities.setCapability("deviceName", "Nexus_6p");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("version", "6");
// capabilities.setCapability("automationName", "selendroid");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.salesforce.chatter");
capabilities.setCapability("appActivity", "com.salesforce.chatter.Chatter");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("ignore-certificate-errors");
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
capabilities.setCapability("chromedriverExecutable",
"C://Users//Bindu//Documents//Bindu Work//Software//Selenium//Driver Executables//Chrome Driver//chromedriver_2.20//chromedriver.exe");
AndroidDriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
WebElement IagreeButton = driver.findElement(
By.xpath("//android.widget.TextView[contains(@resource-id,'com.salesforce.chatter:id/mi_accept')]"));
IagreeButton.click();
System.setProperty("webdriver.chrome.driver",
"C://Users//Bindu//Documents//Bindu Work//Software//Selenium//Driver Executables//Chrome Driver//chromedriver_2.20//chromedriver.exe");
WebDriverWait wait = new WebDriverWait(driver, 10);
int contextHandles = driver.getContextHandles().size();
System.out.println("Context Handles : " + contextHandles);
for (Object contextName : driver.getContextHandles()) {
System.out.println("Context Name : " + contextName);
if (contextName.toString().toUpperCase().contains("WEBVIEW")) {
System.out.println("CONTEXT NAME : " + contextName);
System.out.println("Context :: " + contextName.toString());
driver.context(contextName.toString());
Iterable<String> windowHandles = driver.getWindowHandles();
for (String windowHandle : windowHandles) {
System.out.println("Window handle: " + windowHandle);
driver.switchTo().window(windowHandle);
System.out.println("PAGE SOURCE OF DIFFERENT WINDOW HANDLES : " + driver.getPageSource());
}
}
}
String pageSource = driver.getPageSource();
System.out.println("Page Source : " + pageSource.toString());
if (pageSource.contains("Custom")) {
System.out.println("TEST");
}
}
}