Я пытаюсь использовать автоматизацию пользовательского интерфейса с 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
.Чего мне не хватает?