0

Xcode 4.0.1 と Instruments を使用して、いくつかの UIAutomation テストを実装しようとしています。

現在、MainWindow ( mainWindow = app.mainWindow();) のボタンが有効になっているかどうかを判断しようとしています。

これは iPad II で実行されているアプリですが、今のところ愛を感じていません。

誰でも手伝ってもらえますか?

これが私が使用しようとしている構文です。これは正しいようですか?

var title="Checking that Sign-In button is disabled";  
try {  
    if (mainWindow.buttons()["Sign In"].isEnabled())  
    UIALogger.logPass("Try: " + title + " has passed.");  
}  
catch (error) {  
    UIALogger.logError(error);  
    target.logElementTree();  
    UIALogger.logFail("Try: " + title + " has failed.");  
}
4

4 に答える 4

2

おい。
私はソサリバンに同意します。一般的に、ボタン アクセスに問題がある可能性があります。さらに、mainWindow.buttons() に「サインイン」という名前のものが含まれていない場合、コード全体が出力なしで実行されませんか? ボタンがオブジェクトツリーにあることを確認し、その位置を確認して(アクセスできるように)、.isEnabled()を呼び出して、ユーザーに対して有効になっているかどうかを確認します。
多分最初にこのコードを試してください:

var title="Checking that Sign-In button is disabled";  
try {
  if (mainWindow.buttons()["Sign In"] && mainWindow.buttons()["Sign In"].isEnabled())  {
      UIALogger.logPass("Try: " + title + " has passed.");  
  } else {
      throw new Error("no SignIn button or button not enabled");
    }
} catch (error) {  
  UIALogger.logError(error);  
  target.logElementTree();  
  UIALogger.logFail("Try: " + title + " has failed.");  
}

最初のチェックインでifは、ボタンがツリー構造 (メイン アプリの下) で見つかったかどうかを確認します。問題が解決しない場合は、ツリー構造のどこにボタンが配置されているかを確認し、それが有効になっているかどうかを確認するための前提条件として、適切な場所の検証を行います。

于 2011-04-05T12:04:27.413 に答える
0

コードでボタンが無効になっている場合、次の式は False になります

mainWindow.buttons()["Sign In"].isEnabled()

コードにはそのためのelseステートメントがなく、エラーもスローされません。

yoosibaの回答に示されているように、アクセスしているオブジェクトが現在のウィンドウに存在するかどうかを最初に確認する必要があります。

于 2011-04-22T07:29:53.973 に答える
-1

うーん。Ok....

SourceForge から取得した「alexvollmer-tuneup_js」と呼ばれる UIAutomation オープンソース フレームワークを使用して作業します。これは自由に利用でき、変更が推奨されます (また、作成者は、自分のコードのバージョンを分岐して他のユーザーと共有することを要求しています)。

彼は assertTrue() と assertFalse() の 2 つの関数を持つ assertions.js という名前のファイルを持っています。

テストファイルにインポートされた「uiautomation-ext.js」と呼ばれる別のファイルでそれらを使用します。uiautomation-ext.js に、次の 2 つの関数を追加しました。

/**
* Asserts that the given button is disabled.
*/
buttonIsDisabled: function(buttonName) {
        assertFalse(UIATarget.localTarget().frontMostApp().mainWindow().buttons()[buttonName].isEnabled(), "The button: " + buttonName + " is disabled.");
},

/**
* Asserts that the given button is ENABLED.
*/
buttonIsEnabled: function(buttonName) {
        assertTrue(UIATarget.localTarget().frontMostApp().mainWindow().buttons()[buttonName].isEnabled(), "The button: " + buttonName + " is enabled.");
}

これら 2 つの関数は、'extend(UIAWindow.prototype'.

私/私たちがしたことを私が望むほど明確に伝えたかどうかは完全にはわかりませんが、ここで最善を尽くしました. 皆さんお元気で!

スティーブ・オー

于 2011-04-04T20:23:16.373 に答える