【问题标题】:page scroll is not happening appium java client页面滚动没有发生appium java客户端
【发布时间】:2017-09-19 15:26:50
【问题描述】:

我正在为我的应用程序进行自动化移动测试。在登录页面输入用户名和密码后,键盘 弹出并阻止屏幕中的所有内容。所以它抛出了使用给定的搜索参数 org.openqa.selenium.NoSuchElementException 在页面上找不到元素: 要启用滚动或屏幕触摸,我尝试了很多方法。

1)
WebElement element1 = driver.findElement(MobileBy.AccessibilityId("btnLogin"));
	  	  int x = element1.getLocation().getX();
	  	  int y = element1.getLocation().getY();
		  TouchAction action = new TouchAction((PerformsTouchActions) driver);
	  action.press(x,y).moveTo(x,y-90).release().perform();
    
    2)
    WebElement element1 = driver.findElement(MobileBy.AccessibilityId("btnLogin"));
	  ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);",element1);
    
    3)
    
     TouchAction action = new TouchAction((PerformsTouchActions) driver);
	  WebElement element1 = driver.findElement(MobileBy.AccessibilityId("com.a.b:id/imageView"));
	  WebElement element2 = driver.findElement(MobileBy.AccessibilityId("com.a.b:id/btnLogin"));
	  action.press(element1).moveTo(element2).release();
    
    4)
    JavascriptExecutor js = (JavascriptExecutor) driver;
	  HashMap<String, String> scrollObject = new HashMap<String, String>();
	  scrollObject.put("direction", "up");
	  scrollObject.put("element", "btnLogin");
	  js.executeScript("mobile: scroll", scrollObject);
    
    5)
    ((AndroidDriver) driver).context("NATIVE_APP");
	  WebElement element = driver.findElementById("btnLogin");
	  int x = element.getSize().getWidth();
    int xEnd = 0;
	  int yStart = element.getSize().getHeight()/2;
	  ((AndroidDriver) driver).swipe(x, yStart, xEnd, yStart, 500);

我无法解决此问题..您能否建议我提供一些示例代码来解决此问题。

【问题讨论】:

    标签: java appium


    【解决方案1】:

    要隐藏键盘,您可以使用以下方法 driver.hideKeyboard() 。这与 AppiumDriver 一起工作。

    输入用户名和密码后就可以使用这行代码了:

    driver.hidekeyboard();

    【讨论】:

    • 我得到了那一天..对于滚动我需要更多信息。
    【解决方案2】:
    public static void swipeVertical(AppiumDriver driver, double startPercentage, double finalPercentage, double anchorPercentage, int duration) throws Exception {
        Dimension size = driver.manage().window().getSize();
        int anchor = (int) (size.width * anchorPercentage);
        int startPoint = (int) (size.height * startPercentage);
        int endPoint = (int) (size.height * finalPercentage);
        new TouchAction(driver).press(anchor, startPoint).waitAction(duration).moveTo(anchor, endPoint).release().perform();
    }
    

    像这样调用上面的方法:

    向上滚动:swipeVertical((AppiumDriver)driver,0.9,0.1,0.5,3000);

    向下滚动:swipeVertical((AppiumDriver)driver,0.1,0.9,0.5,3000);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-04
      • 2017-09-13
      • 2019-04-24
      • 2019-01-03
      • 2020-05-25
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多