Я хочу сделать параллельное выполнение на двух устройствах с использованием сетки селена.Все было сделано гладко, прямо с установленного JSON, Run Appium Desktop для каждого устройства.
Соединение установлено с appium :
public class ApplicationHandling {
public static AndroidDriver driver;
public static ExtentTest test;
public static ExtentReports extent;
//public static boolean waitForPresenceOfElelment;
public static ConfigFileReader cfg;
public ApplicationHandling()
{
cfg = new ConfigFileReader();
System.out.println("Inside application handling constructor");
Date date=new Date();
SimpleDateFormat dateFormatFolder = new SimpleDateFormat("dd_MMM_yyyy");
File ResultDir = new File(System.getProperty("user.dir")+File.separator+"/FrameworkReports/"+dateFormatFolder.format(date));
System.out.println(ResultDir);
// Defining Directory/Folder Name
if (!ResultDir.exists()){ // Checks that Directory/Folder Doesn't Exists!
ResultDir.mkdir();
}
SimpleDateFormat dateFormat=new SimpleDateFormat("dd_MMM_yyyy_hh_mm_ssaa");
extent=new ExtentReports(ResultDir +"/" +"Report"+""+dateFormat.format(date)+".html",false);
}
public static RemoteWebDriver getInstance()
{
System.out.println("remote webdriver");
return driver;
}
@Parameters({"device","version"})
@BeforeTest(alwaysRun = true)
public static void setUp(String device,String version) throws MalformedURLException, InterruptedException {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("platformName", "Android");
cap.setCapability("deviceName", device);
cap.setCapability("noReset", true);
cap.setCapability(CapabilityType.VERSION,version);
cap.setCapability("automationName", cfg.getAutomationName());
cap.setCapability ("appPackage", cfg.getAppPackage());
cap.setCapability ("appActivity", cfg.getAppActivity());
System.out.println("Before Suite Execution started");
System.out.println("Driver:"+driver);
System.out.println("URL:"+cfg.getApplicationUrl());
System.out.println("cap: "+cap);
driver = new AndroidDriver<MobileElement>(new URL(cfg.getApplicationUrl()), cap);
System.out.println(driver);
}
JSON:
{
"capabilities":
[
{
"deviceName": "Redmi",
"platformName": "Windows",
"browserName":"Android",
"platformVersion": "7.0",
"maxInstances": 1
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://0.0.0.0:4723/wd/hub",
"host": "0.0.0.0",
"port": 4723
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hubPort": "4444",
"hubHost": "127.0.0.1"
}
}
Testng.xml
<test name="test_redmi">
<parameter name="device" value="Redmi"/>
<parameter name="version" value="7.0"/>
<classes>
<class name="Tests.LoginTest">
<methods>
<include name="loginOTP"/>
</methods>
</class>
</classes>
Журнал ошибок
org.openqa.selenium.remote.ProtocolHandshake createSession INFO: откат к прямому соединению с удаленным концом W3C
org.openqa.selenium.SessionNotCreatedException: невозможно создать новый удаленныйсессия.Желаемые возможности = Возможности [{appPackage = "com.amhi.healthjinn", appActivity = "com.amhi.healthjinn.MainActivity", noReset = true, имя-автомата = uiautomator2, имя-платформы = Android, имя-устройства = Moto E, версия = 7.1.2}], необходимые возможности = возможности [{}] Информация о сборке: версия: «неизвестно», редакция: «1969d75», время: «2016-10-18 09:43:45 -0700»
-> Это дает мне ошибку, когда я создаю экземпляр драйвера.