首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python从循环中打开多个显示窗口。

Python从循环中打开多个显示窗口。
EN

Stack Overflow用户
提问于 2015-05-11 12:51:28
回答 1查看 2.8K关注 0票数 3

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

我有一个循环,我试图加载一些不同的网页,但目前相同的网页打开在不同的窗口。

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

代码语言:javascript
复制
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/")

编辑过的

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

代码语言:javascript
复制
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会话,然后铬驱动程序将只与该会话对话,所以您能为每个driver.get("")请求打开多个xephyr会话吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 16:50:52

好的,我在这里重复了这个问题。当我发现这个问题时,我几乎要拍自己的耳光,因为一旦所有的片段都在一起,它就很明显了。问题是,在第一个服务器没有连接到“真正的”X服务器之后启动的显示。它们彼此相连。下面是发生的事情:

  1. 创建一个显示并在其上调用start()方法。这个start方法启动一个新的Xephyr实例,并帮助更改DISPLAY环境,以便连接到X的后续进程连接到新的Xephyr实例。
  2. 启动Chrome,它连接到新的Xephyr实例。耶!
  3. 您将创建一个新的显示,会主动地将其连接到第一个Xephyr实例,而不是“真正的”X服务器。由于它的尺寸与第一个Xephyr相同,它占用了第一个显示的全部空间,并且完全阻碍了前面创建的Chrome浏览器的视图。看起来只有一个Xephyr在运行,但是有两个在运行(例如,可以通过使用ps来确定)。
  4. 新的Chrome实例出现在嵌入式显示器中。您有两个运行Chrome的实例,但无法看到前面的一个实例。

您必须做的是在创建新的Display之前,将DISPLAY重置为开始创建显示器之前的状态。下面是工作的代码:

代码语言:javascript
复制
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")
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30168169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档