Как использовать UI Automation с ChromiumWebBrowser? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь использовать автоматизацию пользовательского интерфейса с ChromiumWebBrowser, поэтому мне удалось заставить его работать, передав опцию командной строки force-renderer-accessibility в настройки.Он был доступен на инструменте inspect.exe, но я все еще не мог найти его по коду.Может ли кто-нибудь просто дать мне пример кода?

Вот как я инициализирую ChromiumWebBrowser:

void InitializeChromiumWebBrowser()
{
    var settings = new CefSettings()
    {
        CefCommandLineArgs = {
            new KeyValuePair<string, string>("force-renderer-accessibility", "true")
        },
        MultiThreadedMessageLoop = false
    };
    Cef.Initialize(settings);
    m_chromeBrowser = new ChromiumWebBrowser("http://127.0.0.1/calc.html");
    m_chromeBrowser.Name = "chromiumWebBrowser";
    var t = new Timer { Interval = 5 };
    t.Start();
    t.Tick += (s, e) => BeginInvoke((Action)(() => Cef.DoMessageLoopWork()));
    m_chromeBrowser.LoadingStateChanged += M_chromeBrowser_LoadingStateChanged;
    browser_tabPage.Controls.Add(m_chromeBrowser);
}

Я пытаюсь манипулировать ими с помощью автоматизации пользовательского интерфейса, но не могу найтидаже верхнее окно:

using (var proc = Process.GetCurrentProcess())
{
    var root = AutomationElement.FromHandle(proc.MainWindowHandle);
    var browser = root.FindFirst(TreeScope.Descendants, 
        new PropertyCondition(AutomationElement.ClassNameProperty, "CefBrowserWindow")); // Always null
}

Но browser всегда равно null.Чего мне не хватает?

...