gpt4 book ai didi

Python循环打开多个显示窗口

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:26 27 4
gpt4 key购买 nike

我今天从社区得到了一些很大的帮助,希望有人能在这个小问题上为我指明正确的方向。

我有一个循环,我试图加载许多不同的网页,但此时同一个网页在不同的窗口中打开。

如何在单独的显示器中打开它们?有没有办法给显示器贴上标签?

for d in data["screen"]:
screen_list["code"]))
display = Display(visible=1, size=(800, 600))
display.start()
driver = webdriver.Chrome()
driver.get("https://" + d["server"] + "/test/")

已编辑

为了改进答案,我编写了一个快速脚本来尝试加载显示给不同网页的两个不同显示,但它在同一窗口中加载了两个网页

import sys
import os
from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.common.keys import Keys



display = Display(visible=1, size=(800, 600))
display.start()
driver = webdriver.Chrome()
driver.get("https://news.bbc.co.uk")

display2 = Display(visible=1, size=(800, 600))
display2.start()
driver2 = webdriver.Chrome()
driver2.get("https://www.google.com")

已编辑

我认为问题在于脚本在一个端口上打开了一个 xephyr session ,然后 chrome 驱动程序将只与那个 session 对话,所以你可以为每个 driver.get("") 请求?

最佳答案

好的,我在这里重现了这个问题。当我发现这个问题时,我差点给自己打耳光,因为一旦所有部分都放在一起就很明显了。 问题是您在第一个之后启动的显示没有连接到您的“真实”X 服务器。他们正在相互联系。这是发生了什么:

  1. 您创建一个显示并在其上调用 start() 方法。此 start 方法启动一个新的 Xephyr 实例并有助于更改 DISPLAY 环境,以便连接到 X 的后续进程连接到新的 Xephyr 实例。

  2. 您启动 Chrome,它连接到新的 Xephyr 实例。耶!

  3. 您创建了一个新显示,它主动连接到第一个 Xephyr 实例而不是您的“真实”X 服务器。由于它与第一个 Xephyr 具有相同的尺寸,因此它占据了第一个显示器的整个空间,并完全阻挡了之前创建的 Chrome 浏览器的 View 。看起来您只有一个 Xephyr 在运行,但实际上有两个在运行(例如,这可以通过使用 ps 来确定)。

  4. 新的 Chrome 实例出现在嵌入式显示器中。您有两个运行的 Chrome 实例,但看不到较早的实例。

您需要做的是在创建新的 Display 之前,将 DISPLAY 重置为开始创建显示之前的状态。这是有效的代码:

import sys
import os
from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.common.keys import Keys

orig = os.environ["DISPLAY"]

display = Display(visible=1, size=(800, 600))
display.start()
driver = webdriver.Chrome()
driver.get("https://news.bbc.co.uk")

# You have to do this between each new Display.
os.environ["DISPLAY"] = orig

display2 = Display(visible=1, size=(800, 600))
display2.start()
driver2 = webdriver.Chrome()
driver2.get("https://www.google.com")

关于Python循环打开多个显示窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30168169/

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