Вы видели https://ncalc.codeplex.com/ и https://github.com/sheetsync/NCalc ?
Он расширяемый, быстрый (например, имеет собственный кеш) позволяет вам предоставлять пользовательские функции и переменные во время выполнения, обрабатывая события EvaluateFunction / EvaluateParameter. Примеры выражений, которые он может анализировать:
Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi");
e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
if (name == "Pi")
args.Result = 3.14;
};
Debug.Assert(117.07 == e.Evaluate());
Он также обрабатывает unicode & amp; многие типы данных изначально. Он поставляется с файлом antler, если вы хотите изменить грамматик. Существует также вилка, которая поддерживает MEF для загрузки новых функций.
Он также поддерживает логические операторы, строки даты / времени и операторы if.
Вы создаете сеанс неправильно, вы можете прочитать Официальные документы Appium для настройки веб-тестирования.
Сначала убедитесь, что:
Создайте сеанс следующим образом:
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1.1");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
AppiumDriver driver=new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capability);
Если вы получите сообщение об ошибке, например:
An unknown server-side error occurred while processing the command.
Original error: unknown error: Chrome version must be >= 55.0.2883.0
-установите appium с верной версией chromedriver:
npm install appium --chromedriver_version="your_version"
Похоже, проблема совместимости с appium / селеном. найдите последнюю версию и попробуйте.
Попробуйте следующий код:
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
File fs = new File("src"); //Assume your aap is inside src folder.
File appPath = new File(fs, "YourAppAPK.apk");
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "RealDeviceNameOrEmulatorName");
caps.setCapability("app",appPath.getAbsolutePath());
caps.setCapability("automationName","uiautomator2");
caps.setCapability("platformName", "android");
AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
// Test Actions Here
System.out.println("Android Driver Started: "+driver);
Основная причина заключается в том, что вы, скорее всего, скомпилировали класс для другой версии класса, в которой отсутствует метод, отличающийся от той, которую вы используете при его запуске.
В трассировке стека четко указано, что метод не существует. Если исключение появляется при вызове метода для объекта в библиотеке, вы, скорее всего, используете отдельные версии библиотеки при компиляции и запуске. Убедитесь, что у вас правильная версия в обоих местах.
Так что это проблема совместимости, и класс HttpClient.Factory принадлежит библиотеке selenium , поэтому проверьте, совместима ли версия с селеном