2014-09-03 27 views
1

我使用Java和Appium版本1.2.0自動執行原生Android應用程序。我想在列表中的某一行上長按自動,以顯示一些通過長按可訪問的選項,現在我手動測試它。這是我曾嘗試:在Appium中獲取錯誤,移動:longClick沒有實現..有另一種方法嗎?

 WebDriverWait wait = new WebDriverWait(driver, 30); 
    HashMap<String,String> longtapObj= new HashMap<String,String>(); 
    WebElement elem = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//android.widget.ListView[1]/android.widget.RelativeLayout[1]"))); 
    JavascriptExecutor js = (JavascriptExecutor) driver;   
    longtapObj.put("element", ((RemoteWebElement) elem).getId() ); 
    js.executeScript("mobile:longClick", longtapObj); 

Appium服務器日誌錯誤:

2014-09-02T23:29:45.808Z - 調試:使用參數收到的請求:{ 「ARGS」:[{「元素「:」5「}],」script「:」mobile:longClick「} 2014-09-02T23:29:45.810Z - 調試:響應客戶端未執行方法

2014-09-02T23 :29:45.810Z - info:< - POST/wd/hub/session/f66d9550-c47e-4380-a0f4-c819a12f59a9/execute 501 3.656 ms - 158

2014-09-02T23:29:48.518Z - 信息: - > GET/WD /集線器/狀態{}

的Eclipse JUnit的錯誤:

org.openqa.selenium.WebDriverException:尚未實現。請幫助我們:http://appium.io/get-involved.html(警告:服務器未提供任何信息棧跟蹤) 命令持續時間或超時:9毫秒

如果註釋出聲明js.executeScript(「手機:longClick」,longtapObj);沒有錯誤拋出。欣賞是否有人知道在原生Android應用中使用Appium實現日誌記錄的正確方法。

回答

1
mobile:longClick is no longer supported by appium version greater than 1.0.0. As you are using Appium version 1.2.0. so you have to perform this action by using something like this. 

如:

testObject = this.WaitAndGetElement();//element on which long tap is to be performed   
TouchAction action = new TouchAction(rm);// rm is the instance of appium driver.  
Thread.Sleep(1000); 
action.Press(testObject).Wait(1000).Perform(); 

對於您可以訪問更多的信息:TouchAction

請讓我知道這是否有助於

+0

我有同樣的問題,而使用抽頭(); 有什麼建議嗎? http://stackoverflow.com/questions/37293615/i-got-this-selenium-exception-method-has-not-yet-been-implemented-while-trying?noredirect=1#comment62111415_37293615 – Emna 2016-05-18 09:05:06

5
JavascriptExecutor js = (JavascriptExecutor) driver; 
    HashMap<String, String> longTapObject = new HashMap<String, String>(); 
    longTapObject.put("element",((RemoteWebElement)w1).getId()); 
    js.executeScript("mobile: longClick", longTapObject); 

上面的代碼是在爲我工作java Appium版本1.2.4.1

+0

它是相同的邏輯觸摸操作:點擊();方法? 這是我的問題有點類似http://stackoverflow.com/questions/37293615/i-got-this-selenium-exception-method-has-not-yet-been-implemented-while-trying?noredirect=1# comment62111415_37293615 – Emna 2016-05-18 09:06:15

2

CHANGES IN VERSION 1.5

Remove long-deprecated mobile: xxx

所以你應該:

  • 安裝Android支持庫...

    The Android Testing Support library is available through the Android SDK Manager

    要通過SDK管理器下載Android支持庫:

    1. 啓動Android SDK管理器。
    2. 在SDK Manager窗口中,滾動到Packages列表的末尾,找到Extras文件夾,並在必要時展開以顯示其內容。
    3. 選擇Android支持庫 item。
    4. 點擊安裝程序包 ...按鈕。
  • 使用TouchAction

    driver.performTouchAction(新TouchAction(驅動程序).tap(X,Y));

0
public void longClick(String element) { 
     // TODO Auto-generated method stub 
     WebElement webElement = appiumDriver.findElement(By.xpath(element)); 

     TouchAction Action = new TouchAction(appiumDriver); 
     Action.longPress(webElement).release().perform(); 
    } 
相關問題