3

White\TestStack による言語 C# フレームワークを使用して、ソフトウェア プロセスの自動化を作成しています。

マウスの右ボタンでクリックしたときにオプションをキャプチャできないため、問題が発生しています。

画像プレビュー

これを試すために使用しているコード

  panel.RightClick();    
  var propClick = _mainWindow.Get<White.Core.UIItems.MenuItems.PopupMenu>(SearchCriteria.ByText("Propeties"));
  propClick .Click();

オプションをキャプチャできず、変数が null になる propClick

私の英語が下手でごめんなさい:(

ヘルプ!

ありがとう :)

4

3 に答える 3

0
panel.RightClick();
Thread.Sleep(500);
var windows = application.GetWindows();
foreach (Window window in windows) {
    if (window.Name == "") {
        var propClick = window.Get<PopupMenu>(SearchCriteria.ByText("Propeties"));
        propClick.Click();
    }
}

私が見たものから、コンテキストメニューは名前のない別のウィンドウですが、これはもちろんアプリケーション固有です

于 2015-03-24T15:30:34.773 に答える
0

マウスの右メニューでは何も試していません。あなたの後にメニューが表示されますか?

panel.RightClick();

そうでなければ、コンテキスト メニューはパネルの一部ではありませんか?

使ってみましたか

panel.RightClick();    
var propClick = panel.Get<MenuItems.PopupMenu>(SearchCriteria.ByText("Propeties"));
propClick.Click();

代わりは?

または、PopupMenu の代わりに Menu を試すこともできます

var propClick = panel.Get<MenuItems.Menu>(SearchCriteria.ByText("Propeties"));

または、最初に白に決定させ、ブレークポイントを置いて型を読み取ります

var propClick = panel.Get(SearchCriteria.ByText("Propeties"));

編集:これに追加するには、次の方法が、キーボード コマンドを使用してコンテキスト メニューを選択するのに役立つ場合があります。

それに加えて、キーボードでメニューを選択してみてください。White には、コンテキスト メニュー (右マウス メニュー) 用の特別なキーはありませんが、以下の方法が役に立ちます。

    /// <summary>
    /// Right mouse click simulation (SHIFT+F10)
    /// </summary>
    /// <param name="container">Container in whish the click should occur.</param>
    private static void ShowContextMenu(this UIItemContainer container)
    {
        container.Keyboard.HoldKey(KeyboardInput.SpecialKeys.SHIFT);
        container.Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.F10);
        container.Keyboard.LeaveKey(KeyboardInput.SpecialKeys.SHIFT);
    }

これはコンテキストメニューを選択するためのものです

    /// <summary>
    /// Get the context menu (right mouse menu) of <paramref name="container"/> whre the current focus is.
    /// </summary>
    /// <param name="mainWindow">Main window of the application, because the context menu is always a child of the window.</param>
    /// <param name="container">Container on which the right click shoul occur.</param>
    /// <returns>Context menu</returns>
    internal static PopUpMenu GetContextMenuOf(this Window mainWindow, UIItemContainer container)
    {
        using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.PopupTimeout = 750))
        {
            container.ShowContextMenu();
            return mainWindow.Popup;
        }
    }
于 2015-02-10T12:20:10.430 に答える