尝试从底部到顶部滑动屏幕直到页面结束,但滑动不会发生在appium

时间:2017-01-10 11:19:20

标签: selenium appium

我试图使用触摸动作类使用滑动找到一个元素但是Appium服务器抛出一个错误,指出该命令存在问题。我试图使用触摸动作类使用坐标从一个移动放到另一个。我的代码如下:

 @Test(priority=4)
 public void selectprod()
 {

drivertest.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
     WebElement categ= drivertest.findElementsByName("See All").get(1);
    categ.click();

        TouchAction abc=new TouchAction(drivertest);
        abc.longPress(479, 754).moveTo(0, -500).perform();

            if (drivertest.findElement(By.name("Pragnya Manufacturer")).isDisplayed())
            {
                drivertest.findElement(By.name("Pragnya Manufacturer")).click();

            }
       }

服务器抛出此错误如下:

  

服务器未响应错误

2 个答案:

答案 0 :(得分:0)

我可以立即告诉你4项改进:

  1. 最重要 - 尽量不要使用隐式等待。

    WebDriverWait wait = new WebDriverWait(driver, 60); //60 is the wait time in seconds
    wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
    
  2. 请使用此代码块进行滚动,将startyendy更改为更改滚动长度和方向。

    public void scrollDown() 
    {
        Dimension size = driver.manage().window().getSize();
        int starty = (int) (size.height * 0.7);
        int endy = (int) (size.height * 0.2);
        int startx = size.width / 2;
        driver.swipe(startx, starty, startx, endy, 800);
    }
    
  3. 如果元素不可见,函数isDisplayed()将抛出异常,请用trycatch包围它。

  4. 你只滚动一次,也许元素位于表格的下方,我建议做一个for()循环(不要忘记为滚动迭代添加一个限制)

答案 1 :(得分:0)

public static void swipeLeft(AppiumDriver<MobileElement> driver)
    {
        Dimension size = driver.manage().window().getSize(); 
        int startx = (int) (size.width * 0.8); 
        int endx = (int) (size.width * 0.16); 
        int starty = (int)(size.height * 0.75); 
        driver.swipe(startx, starty, endx, starty, 1000);
    }

希望这会有所帮助