UI 无需通过 Selenium 即可自动导航 Microsoft Edge?

UI Automation to navigate Microsoft Edge without going through Selenium?

我正在为 VB.Net 中的 WPF 程序开发一些 UI Automation 作品,并取得了巨大的成功。 . .直到尝试自动化 Web 浏览器。

Chrome 有 --force-renderer-accessibility 这是天赐之物,但尽管它是基于 Chromium 构建的,但它似乎已在 Microsoft Edge 上禁用了此标志。 . .

他们有没有可能重新命名旗帜?还有人知道如何强制 Microsoft Edge 进入辅助功能模式吗?我看过 this SO Article,但这似乎不是一个好的答案,也不是一个好问题(答案中的第一个 link 已从 SO 中完全删除。。。)。

使用 linked SO 文章中的 WebDriver API 有什么好处 documentation/examples 吗?

我有更多的时间来深入研究这个问题并进一步发挥作用。我找到 this article (a bizarre place to find such information) 并按照说明修改了我的注册表。我现在有 3 个让我感到困惑的场景,但是在测试注册表更改之后,以及在使用 --force-renderer-accessibility 标志从命令行 re-running MSEdge 之后(在将我的注册表设置回原始设置以确认准确性),我认为可以肯定地说我们在 Chrome 中喜爱的相同标志在 MSEdge 中仍然有效。

TLDR: 区别是什么?与 Chrome 相比,MSEdge 将所有东西都埋在了 1,000 层深处,而 "" region 条目真的让我失望了。您仍然希望查找 Chrome Legacy Window (违反直觉),然后在该窗格中搜索您的元素。 (FWIW,这也让我失望了,因为 Chrome,通常情况下,如果我看到这个,我记得标志没有适当地采取,所以我不愿在 Inspect 中点击过去。)/END TLDR

无需修改我的注册表,我可以在树中找到这个 Advanced 按钮。

如图所示,它给了我一大堆错误,但是按钮在那里,尽管页面中的文本不存在。

如果我更改注册表设置,我会得到文本,但仍然会收到该元素的所有错误。

最后,如果我通过此命令打开 MSEdge.exestart "Title for fun here" msedge.exe --force-renderer-accessibility "URL here" 不仅会显示文本,还会显示我正在搜索的元素的信息!

至于@Jimi 在评论中提到的内容,我认为只有在启用 MSEdge Performance Boost 时才会出现单击 X 按钮时持续 MSEdge 进程的问题。我在某个时候找到了一篇文章,但是经过所有的搜索和疯狂 “哦,天哪,不,我必须跳到 Selenium?!?” 我最近尝试过的时刻自动化 Edge,我已经把它丢在浏览器历史的沼泽中了。如果我再次找到它,我会 post 这个答案中的 link。

如果有人有更好的方法在 flag 之外做同样的事情,请随时提供一些见解!