2016-07-14 6 views
2

Я тестирую собственное приложение для Android и вам нужно нажать кнопку, расположенную в нижней части экрана , Я видел множество примеров этого, используя Java и Javascript, но я использую Node.js, и ничего не работает. Я довольно новичок в этом материале и потратил слишком много времени на что-то настолько простое.Выбор элемента пользовательского интерфейса не на экране собственного приложения для Android с помощью Appium, веб-драйвера Selenium, узла js, Mocha и т. Д.

Например, чтобы нажать на экранном элементе это работает:

it("Select Button Test",function(){ 
         return driver 
          .setImplicitWaitTimeout(timeoutWait) 
          .elementByXPath('//android.widget.TextView[@text=\'My Button\']').click(); 
       }); 

Также полный XPath работает для экранных элементов - в этом случае:

var myButton ='//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.TableLayout[1]/android.widget.TableRow[10]'); 

    it("Select Button Test",function(){ 
        return driver 
         .setImplicitWaitTimeout(timeoutWait) 
         .elementByXPath(myButton).click(); 
      }); 

Я нашел полное XPath для этой кнопки прокручивая его во время теста и запуская экран в инспекторе appium. Я пробовал различные методы прокрутки, касания и прокрутки из документов webdriver, но ничего не было, поэтому, видимо, я скитался с ponderosa ...

Так как я могу получить доступ к кнопке, которая отсутствует на экране?

Я уверен, что это некоторые мирские детали. Благодаря!

+0

после прокрутки выводит элемент на экране – karthick23

+0

, нет функции прокрутки, которая работает из того, что я могу сказать. Если я могу получить экран для прокрутки, я уверен, что он будет работать, так как зависание - это тот факт, что элемент не на экране. – sluggo

ответ

0

попробовать функцию ниже прокрутки для просмотра с использованием размеров

public void scroll() throws IOException { 

      Dimension dimensions = driver.manage().window().getSize(); 
      System.out.println("Size of Window= " +dimensions); 
      int scrollStart = (int) (dimensions.getHeight() * 0.5); 
      System.out.println("Size of scrollStart= " +scrollStart); 
      int scrollEnd = (int) (dimensions.getHeight() * 0.2); 
      System.out.println("Size of scrollEnd= " + scrollEnd);    
      driver.swipe(0,scrollStart,0,scrollEnd,1000); } 

, а затем использовать стратегию локатора, чтобы найти элемент

+1

Я использую node.js (а не Java) для сценария тестирования, поэтому я уверен, что это не сработает. – sluggo

0

Я использовать Node.js, чтобы проверить реакцию родное приложение решить эту проблему. appium node.js sample code имеют прокручивать feature.First, вам необходимо импортировать все, что образец imported.Then есть код:

it("should scroll", function() { 
    return driver 
     .elementByXPath('//android.widget.TextView[@text=\'Animation\']')//change your element which doesn't cover it. 
     .elementsByXPath('//android.widget.TextView') 
     .then(function (els) { 
     return Q.all([ 
      els[7].getLocation(), 
      els[3].getLocation() 
     ]).then(function (locs) { 
      console.log('locs -->', locs); 
      return driver.swipe({ 
      startX: locs[0].x, startY: locs[0].y, 
      endX: locs[1].x, endY: locs[1].y, 
      duration: 800 
      }); 
     }); 
     }); 
    }); 

удачи !!