diff --git a/src/main/java/io/appium/java_client/remote/YouiEngineCapabilityType.java b/src/main/java/io/appium/java_client/remote/YouiEngineCapabilityType.java new file mode 100644 index 000000000..80301762d --- /dev/null +++ b/src/main/java/io/appium/java_client/remote/YouiEngineCapabilityType.java @@ -0,0 +1,13 @@ +package io.appium.java_client.remote; + +import org.openqa.selenium.remote.CapabilityType; + +/** + * The list of youiengine-specific capabilities. + */ +public interface YouiEngineCapabilityType extends CapabilityType { + /** + * IP address of the app to execute commands against. + */ + String APP_ADDRESS = "youiEngineAppAddress"; +} diff --git a/src/main/java/io/appium/java_client/youiengine/YouiEngineDriver.java b/src/main/java/io/appium/java_client/youiengine/YouiEngineDriver.java new file mode 100644 index 000000000..215d85264 --- /dev/null +++ b/src/main/java/io/appium/java_client/youiengine/YouiEngineDriver.java @@ -0,0 +1,42 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.appium.java_client.youiengine; + +import io.appium.java_client.AppiumDriver; +import io.appium.java_client.TouchAction; +import io.appium.java_client.youiengine.internal.JsonToYouiEngineElementConverter; +import org.openqa.selenium.Capabilities; +import org.openqa.selenium.WebElement; + +import java.net.URL; + +public class YouiEngineDriver extends AppiumDriver { + + /** Constructor takes in the Appium Server URL and the capabilities you want to use for this + * test execution. **/ + public YouiEngineDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities, JsonToYouiEngineElementConverter.class); + } + + @Override + public void swipe(int startx, int starty, int endx, int endy, int duration) { + // YouiEngine does not use duration + TouchAction swipeAction = new TouchAction(this).press(startx, starty).moveTo(endx, endy) + .release(); + swipeAction.perform(); + } +} diff --git a/src/main/java/io/appium/java_client/youiengine/YouiEngineElement.java b/src/main/java/io/appium/java_client/youiengine/YouiEngineElement.java new file mode 100644 index 000000000..7e20df81b --- /dev/null +++ b/src/main/java/io/appium/java_client/youiengine/YouiEngineElement.java @@ -0,0 +1,23 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.appium.java_client.youiengine; + +import io.appium.java_client.MobileElement; + +public class YouiEngineElement extends MobileElement { + +} diff --git a/src/main/java/io/appium/java_client/youiengine/internal/JsonToYouiEngineElementConverter.java b/src/main/java/io/appium/java_client/youiengine/internal/JsonToYouiEngineElementConverter.java new file mode 100644 index 000000000..7aa09a52c --- /dev/null +++ b/src/main/java/io/appium/java_client/youiengine/internal/JsonToYouiEngineElementConverter.java @@ -0,0 +1,38 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.appium.java_client.youiengine.internal; + +import io.appium.java_client.MobileElement; +import io.appium.java_client.internal.JsonToMobileElementConverter; +import io.appium.java_client.youiengine.YouiEngineElement; + +import org.openqa.selenium.remote.RemoteWebDriver; + + +public class JsonToYouiEngineElementConverter extends JsonToMobileElementConverter { + public JsonToYouiEngineElementConverter(RemoteWebDriver driver) { + super(driver); + } + + @Override + protected MobileElement newMobileElement() { + YouiEngineElement toReturn = new YouiEngineElement(); + toReturn.setParent(driver); + return toReturn; + } +} +