Как прокрутить вправо в строке меню в Appium? - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь прокрутить вправо в строке меню, используя appium в android. Сейчас я использую java для этого и пробовал следующие коды:

JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "right");
js.executeScript("mobile: scroll", scrollObject);

и

TouchAction action = new TouchAction(driver);
action.press(10, 10);
action.moveTo(10, 100);
action.release();
action.perform();

Но проблема, с которой я сталкиваюсь, заключается в том, когда я пытаюсь получить размер страница дает значение как [2048,1440], а элемент, который я пытаюсь найти, находится в местоположении [2300,162]. Когда я пытаюсь ввести 2300 и искать элемент, выдает ошибку, что элемент, который вы ищете, выходит за пределы.

Вот строка меню, например,

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Код указан ниже и не содержит ошибок времени компиляции.

    import io.appium.java_client.MobileDriver;
    import io.appium.java_client.android.AndroidDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import io.appium.java_client.remote.MobileCapabilityType;
    import io.appium.java_client.pagefactory.AndroidFindBy;
    import io.appium.java_client.MobileElement;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;

    import java.net.MalformedURLException;
    import java.net.URL;

    public class MobileAutomation {


    public static void main(String[] args) throws MalformedURLException {
            MobileElement spellingButton;
            //AppiumDriver<?> driver;
            DesiredCapabilities cap = new DesiredCapabilities();
            cap.setCapability(MobileCapabilityType.UDID, "HT4ANJT07993");
            cap.setCapability("appPackage", "com.office.hw");
            cap.setCapability("appActivity", "com.office.hwwrit");
            //URL url = new URL("127.0.0.1:4723/wd/hub");
            //driver = new AppiumDriver<>(url, cap);

            MobileDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);

            driver.findElementByXPath("//android.widget.TextView[@text='30WordArt.docx']").click();

spellingButton = driver.findElementByXPath("//android.widget.Button[contains(@content-desc='Spelling')]");
            JavascriptExecutor js = (JavascriptExecutor) driver;

            WebDriverWait wait = new WebDriverWait(driver,20);
            wait.until(ExpectedConditions.visibilityOf(spellingButton));

            if (spellingButton.isDisplayed())
            {

         js.executeScript("arguments[0].scrollIntoView()",spellingButton);
             spellingButton.click();
            }
      }
    }
0 голосов
/ 13 апреля 2020

Если вы хотите прокрутить элемент, я бы порекомендовал использовать метод scrollIntoView для прокрутки до элемента. Тяжелая работа по поиску координат X, Y будет выполнена java исполнителем сценария.

js.executeScript("arguments[0].scrollIntoView()",element);
...