Hi Sarah
Its really appreciated that you are struggling but the code which you share above is working with coordinates but the which i posted is working with text coordinates will change with the screen dimmision but the UIselector code which i share with you working with text so any type of application like native hybrid webapp can be handled with this code
Your code is pasted below in this i cannot understand what you required
public static void scrollTo(String direction, int times) throws InterruptedException {
Thread.sleep(1000);
if (direction.equals(“down”)) {
Dimension dim = driver.manage().window().getSize();
int width = dim.getWidth() / 2;
for (int i = 0; i < times; i++) {
int startY = (int) (dim.getHeight() * 0.7);
int endY = (int) (dim.getHeight() * 0.5);
new TouchAction(driver).press(point(width, startY)).waitAction(waitOptions(Duration.ofSeconds(1)))
.moveTo(point(width, endY)).release().perform();
so please use my code
which is easy i already comment on each line which you have mentioned as error
Everytime i execute your code, its giving me some errors so I have to change it to for the errors to be resolved
public static void scrollTo(String direction, int times) throws InterruptedException {
Thread.sleep(1000);
Object down = null;
if (direction.equals(down)) {
org.openqa.selenium.Dimension dim = driver.manage().window().getSize();
int width = dim.getWidth() / 2;
for (int i = 0; i < times; i++) {
int startY = (int) (dim.getHeight() * 0.7);
int endY = (int) (dim.getHeight() * 0.5);
new TouchAction(driver).press(point(width, startY)).waitAction(waitOptions(Duration.ofSeconds(1)))
.moveTo(point(width, endY)).release().perform();{
}
}
}
}
private static WaitOptions waitOptions(Duration ofSeconds) {
// TODO Auto-generated method stub
return null;
}
private static PointOption point(int width, int startY) {
// TODO Auto-generated method stub
return null;
}
and im calling it by scrollTo(“down”, 1);
But its still not working. Can you please help me with this?
I know there has been many responses, here is what I use,
public boolean scrollToElement (By by) throws Exception {
boolean isFoundTheElement = appiumServer.getDriver().findElements(by).size() > 0;
while (isFoundTheElement == false) {
swipeVertical(0.8, 0.1, 0.5, 2000);
isFoundTheElement = appiumServer.getDriver().findElements(by).size() > 0;
}
return isFoundTheElement;
}
public void swipeVertical (
double startPercentage, double finalPercentage, double anchorPercentage, int duration)
throws Exception {
Dimension size = appiumServer.getDriver().manage().window().getSize();
int anchor = (int) (size.width * anchorPercentage);
int startPoint = (int) (size.height * startPercentage);
int endPoint = (int) (size.height * finalPercentage);
getTouchAction().press(PointOption.point(anchor, startPoint))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(duration)))
.moveTo(PointOption.point(anchor, endPoint)).release().perform();
}
public TouchAction getTouchAction () {
return new TouchAction(appiumServer.getDriver());
}
I was continously getting an error on "getDrive. So, i have changed the code a bit. But can you tell me how to call it in the main method?
public static boolean scrollToElement (By by) throws Exception {
boolean isFoundTheElement = driver.findElements(by).size() > 0;
while (isFoundTheElement == false) {
swipeVertical(0.8, 0.1, 0.5, 2000);
isFoundTheElement = driver.findElements(by).size() > 0;
}
return isFoundTheElement;
}
public static void swipeVertical (
double startPercentage, double finalPercentage, double anchorPercentage, int duration)
throws Exception {
org.openqa.selenium.Dimension size = driver.manage().window().getSize();
int anchor = (int) (size.width * anchorPercentage);
int startPoint = (int) (size.height * startPercentage);
int endPoint = (int) (size.height * finalPercentage);
getTouchAction().press(PointOption.point(anchor, startPoint))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(duration)))
.moveTo(PointOption.point(anchor, endPoint)).release().perform();
}
public static TouchAction getTouchAction () {
return new TouchAction(driver);
}
by is a variable, of type By
https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/By.html1
This is your locator object.
I have already imported import org.openqa.selenium.By; but still its giving me error
all menus are different. But, you would use driver.findElements(by) to get the list. Then, iterate through the list, calling click (or better yet, make a tap(MobileElement) method since this is Appium). However, once you change page, the elements found with driver.findElements(by) are no longer going to be relevant. Will need to get it again, and keep track of your placement.