gpt4 book ai didi

c# - Selenium ChromeDriver - 在后台运行但不是 headless 的

转载 作者:行者123 更新时间:2023-11-30 12:55:29 24 4
gpt4 key购买 nike

我正在寻找一种在后台使用 chrome 驱动程序运行 selenium 测试的方法。我的意思是背景,而不是前景聚焦窗口。我实际上可以做到这一点,但是一旦在 chrome 驱动程序中发生打开新选项卡或在窗口之间切换(基本上是切换窗口句柄)等操作,浏览器窗口就会被推到前台。

所以我的问题是,如何在不 headless 运行测试的情况下防止这种情况发生?

欢迎提出任何建议,欢迎讨论。


编辑----

作为临时解决方案,我想出了以下办法。

使用 Windows 10 虚拟桌面功能,我在单独的虚拟桌面中运行测试和 chrome 浏览器窗口。然后我切换回我的主要虚拟桌面以继续执行其他任务。这可以防止 Chrome 浏览器窗口被强制置于前台。

请注意,当出现上述任何操作时,这仍然会使任务栏中出现闪烁的 Chrome 图标。

仍在寻找更可靠的解决方案,因此我们仍然感谢任何建议。


希望打开新的视角和讨论点,并最终找到解决方案,我将提供一些有关我的代码正在做什么的更详细信息。

我有 5 个 chrome webdrivers,每个 webdrivers 都包含 6 个选项卡 (WindowHandles)。这个想法是必须在每个选项卡上连续重复某个过程。因此,我们遍历每个 webdriver,并在该 webdriver 中遍历每个选项卡,并将此选项卡设置为 webdrivers 当前的 WindowHandle。这会使 Chrome 窗口明显切换到指定的标签页。

发生该切换后,将对选项卡的内容执行基本的 selenium 自动化,然后我们重复整个过程。

实际问题似乎发生在 chrome webdriver 切换到新选项卡 (WindowHandle) 时,此时包含该选项卡的 chrome 窗口被推到前台并窃取了焦点。请注意,这并不总是发生,通常它可以毫无问题地切换选项卡。所以目前还不清楚是否还有其他因素会导致窗口窃取焦点。


编辑 2------

完成以下操作后:

I overloaded the selenium method which is used to switch between tabs (WindowHandles), and called SetWindoPos each time. Unfortunately this did not solve this issue either. I will try to look deeper into what might be causing this and will report back. – S. Van den Wyngaert

我在运行测试时出去了几个小时,然后回来发现令人惊讶的是我仍在我的主要虚拟桌面(win10 功能)上。这意味着在我离开期间没有出现该问题。我再次开始工作,打开一个 chrome 窗口并注意到在我这样做后不久,焦点再次被其中一个 chrome 驱动程序的窗口窃取。

我由此得出的结论是,只有在打开另一个 chrome 窗口(不是由代码中的 chrome 驱动程序打开)时才会出现此问题。我会继续调查并报告最新情况。

在调查了这个行为几个小时后,我注意到当另一个 chrome 窗口打开时,只要它有焦点,问题就不会发生。所以快速总结一下:

问题不会发生在:

  • 没有打开或最小化其他 chrome 窗口(不是 selenium 驱动的)
  • 打开另一个 chrome 窗口(不是 selenium 驱动的)并获得焦点
  • 另一个运行全屏模式的应用程序获得焦点

问题确实发生在:

  • 另一个 chrome 窗口(非 selenium 驱动)已打开但没有焦点

请注意,当我谈到另一个 Chrome 窗口时,我特指不是由 selenium 驱动的 chrome 窗口,也就是用户打开的常规 Chrome 窗口。

最佳答案

最简单的方法是运行本地 selenium 网格。将您的节点作为 Windows 服务启动。这样测试将在后台运行,而不是 headless 的。

关于c# - Selenium ChromeDriver - 在后台运行但不是 headless 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49262548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com