2016-02-04 41 views
1

我有一個離子應用程序,帶有一個帶有陰離子選項按鈕的離子選項卡。當用戶向左滑動時,該按鈕變得可見。 我想寫一個量角器(Chromedriver & Android & Appium &量角器測試)測試向左滑動,然後單擊按鈕。滑動沒有問題,我可以看到該按鈕變得可見,但點擊未註冊。離子選項按鈕具有觸發事件的ng-click事件。 我已經試過:量角器測試中的離子選項按鈕 - 點擊未註冊

  • 獲取離子選項按鈕元素,然後單擊它
  • 用自來水代替
  • 試圖利用上的位置,通過抓住離子項目計算的嘗試(包含離子選項按鈕),並計算其中離子鍵式按鈕是
  • 使用tapAndHold,等待,並釋放
  • 二手browser.driver.touchActions()。輕按(元件)

我不會收到任何錯誤,該元素不可點擊。該活動尚未註冊;所以它看起來像離子選項按鈕聽另一個事件?

它的工作原理與使用Javascript:

browser.driver.executeScript('angular.element(document.getElementById("delete-button-0")).triggerHandler("click");'); 
+0

'browser.driver.touchActions()自來水(元)' - 你怎麼叫'執行()'在結束了嗎? – alecxe

+0

是的,謝謝。驗證過,我做了一個表演()。 – Boland

+0

只需檢查最後一條語句,如果您通過javascript('executeScript')單擊 - 它可以工作,並且元素正在被點擊 - 對吧? – alecxe

回答

2

您做出向左側滑動操作後,嘗試等待元素可以點擊

var EC = protractor.ExpectedConditions; 
var elm = element(by.id("delete-bu‌​tton-0")); 

browser.wait(EC.elementToBeClickable(elm), 5000); 
elm.click(); 
// or browser.actions().touchActions().tap(elm).perform(); 

或者,您可能需要移至元素然後點擊(或點擊):

browser.actions().mouseMove(elm).click().perform(); 

您也可以嘗試滾動到元素的觀點製作點擊/點按前:

browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement()); 

而且,只能作爲最後的手段,如果一切不工作,通過JavaScript點擊:

browser.executeScript("arguments[0].click();", elm.getWebElement()); 

有缺點,這個解決方案,確保你理解上的差異:

+0

謝謝!等待它可以點擊解決問題。也有道理。 – Boland

+0

爲什麼使用.perform() – Daniel