Skip to content

Commit

Permalink
Fix Find By Name For Android (#165)
Browse files Browse the repository at this point in the history
* Fix Find By Name For Android

* Tested and fix root win driver logic

* Change structure

* Fix

Co-authored-by: Millard <[email protected]>
  • Loading branch information
dinghong2233 and Millard authored Nov 28, 2022
1 parent 92e2aae commit 9c2cc55
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ public boolean runAppiumT2CTest(DeviceInfo deviceInfo, File jsonFile, Logger rep
if (driverInfo.getPlatform().equalsIgnoreCase("windows")) {
WindowsDriver windowsDriver;
testWindowsApp = driverInfo.getLauncherApp();
if (testWindowsApp.length() > 0) {
if (testWindowsApp.length() > 0 && !testWindowsApp.equalsIgnoreCase("root")) {
windowsDriver = appiumServerManager.getWindowsAppDriver(testWindowsApp, reportLogger);
} else {
testWindowsApp = "Root";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,21 @@ public static WebElement findElement(BaseDriverController driver, BaseElementInf
Map<String, String> keyToVal = element.getBasisSearchedBy();
if (keyToVal.get("accessibilityId") != null && keyToVal.get("accessibilityId").length() != 0) {
elementFinded = driver.findElementByAccessibilityId(keyToVal.get("accessibilityId"));
if (elementFinded != null) return elementFinded;
if (elementFinded != null) {
return elementFinded;
}
}
if (keyToVal.get("text") != null && keyToVal.get("text").length() != 0) {
elementFinded = driver.findElementByName(keyToVal.get("text"));
if (elementFinded != null) return elementFinded;
if (elementFinded != null) {
return elementFinded;
}
}
if (keyToVal.get("xpath") != null && keyToVal.get("xpath").length() != 0) {
elementFinded = driver.findElementByXPath(keyToVal.get("xpath"));
if (elementFinded != null) return elementFinded;
if (elementFinded != null) {
return elementFinded;
}
}
throw new IllegalArgumentException("Element can not be found in current UI. Element info is " + element.getElementInfo());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package com.microsoft.hydralab.t2c.runner.controller;

import com.google.common.collect.ImmutableMap;
import io.appium.java_client.AppiumBy;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.nativekey.AndroidKey;
import io.appium.java_client.android.nativekey.KeyEvent;
Expand All @@ -14,6 +15,7 @@
import org.openqa.selenium.interactions.PointerInput;
import org.openqa.selenium.interactions.Sequence;
import org.openqa.selenium.remote.RemoteWebElement;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger;

import java.time.Duration;
Expand Down Expand Up @@ -124,4 +126,16 @@ public void dragAndDropWithPosition(int fromX, int fromY, int toX, int toY) {
dragNDrop.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
androidDriver.perform(Arrays.asList(dragNDrop));
}

@Override
public WebElement findElementByName(String name) {
WebElement elementFound = null;
try {
elementFound = new WebDriverWait(webDriver, Duration.ofSeconds(10))
.until(driver -> driver.findElement(AppiumBy.xpath("//*[@text='" + name + "']")));
} catch (Exception e) {
logger.info("Can not find element by Name: " + name);
}
return elementFound;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -165,5 +165,4 @@ public WebElement findElementByName(String name) {
}
return elementFound;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,4 @@ public void tap(int x, int y) {
tap.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
windowsDriver.perform(Arrays.asList(tap));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@
import io.appium.java_client.windows.WindowsDriver;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class SampleT2CTest {
Expand Down Expand Up @@ -72,9 +74,11 @@ public void getDriversMap(ArrayList<DriverInfo> drivers) {
}
}
if (driverInfo.getPlatform().equalsIgnoreCase("windows")) {
if (driverInfo.getLauncherApp() != null && driverInfo.getLauncherApp().length() > 0) {
caps.setCapability("app", driverInfo.getLauncherApp() + "!app");
String app = "Root";
if (driverInfo.getLauncherApp() != null && !driverInfo.getLauncherApp().equalsIgnoreCase("root") && driverInfo.getLauncherApp().length() > 0) {
app = driverInfo.getLauncherApp() + "!app";
}
caps.setCapability("app", app);
WindowsDriver windowsDriver = null;
if (service != null) {
windowsDriver = new WindowsDriver(service.getUrl(), caps);
Expand Down

0 comments on commit 9c2cc55

Please sign in to comment.