我有一個非常簡單的應用程序,它包含一個TableViewController,它顯示一個帶有圖像,標籤和按鈕的自定義單元格的表格,當你點擊一個按鈕時,actionSheet顯示出來。所以,在我的自定義Java腳本(使用Instruments-UIAutomation)中,我想按下我的表中的按鈕(並且我可以做到這一點沒有任何問題),然後當actionSheet出現時,我只想點擊唯一的按鈕(取消按鈕)它顯示。如何使用JavaScript訪問UIAutomation中的actionSheet(以及它的按鈕)?
而且我不知道如何正確地做到這一點。因此,這裏是我的js代碼:
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();
main.tableViews()[0].cells()[1].buttons()["DetailsButton"].tap();
target.delay(5);
main.actionSheet().elements()[0].tap();
這就是我得到的消息:
Script threw an uncaught JavaScript error: 'undefined' is not a function (evaluating 'main.actionSheet()') on line 9 of New%20Script
我也試過actionSheet().buttons()[0].tap();
- 沒有幫助,繼續得到同樣的錯誤。
我甚至嘗試通過它的accessibleLabel訪問actionSheet:
main.actionSheet()["CellNumberSheet"].elements()[0].tap();
如果它將幫助,這是我展示我的actionSheet方式:
[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
元素的層次結構似乎也正確。
沒有找到多少就可以了有用的信息在網絡......所以任何幫助,將不勝感激的......
這需要我遠一點,但仍然無法正常工作......現在,當我試圖挖掘你建議的方式actionSheet的按鈕,出現其他錯誤:'無法執行對無效元素的操作:UIAElementNil from target.frontMostApp()。actionSheet()。elements()[0]'...同樣所有的方法,如checkIsValid() ','isEnabled()','isVisible()'當我將它們應用到我的actionSheet()時返回False,並且'actionSheet().name()'返回一個空字符串(而在我的文章的截圖中,看到它有一個有效的名稱「CellNumberSheet」)... – arrteme
這很有趣,如何使用app.windows()[2]。元素()[1]來訪問操作表? – Sugre
您建議訪問actionSheet的最後一種方式正常工作,並且所有方法(如isVisible,checkIsValid和isEnabled)都返回True。雖然仍然無法點擊actionSheet的按鈕!嘗試'app.windows()[2] .elements()[1] .elements()[0] .tap()'和'app.windows()[2] .elements()[1] .buttons() [0] .tap()'。沒有成功,它會引發錯誤「無法對無效元素執行操作」。暫時使用解決方案來輕按asctionSheet按鈕,如下所述:http://stackoverflow.com/a/5331896/3065769 – arrteme