selenium - Python open multiple display windows from a loop -
i'm getting great community today , hoping can put me in right direction on little one.
i have loop going trying load number of different web pages @ moment same web page opening in different window.
how can open them in separate displays? , there way label display?
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/") edited
trying improve answer, i've written quick script try load 2 different displays showing different web pages loads both webpages in same window
import sys import os selenium import webdriver pyvirtualdisplay import display 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") edited
i think issue script opens 1 xephyr session on port chrome driver talk session, can open multiple xephyr sessions each driver.get("") request?
ok, reproduced problem here. when found issue, slapped myself since obvious once pieces together. the problem displays start after first 1 not connecting "real" x server. connecting 1 another. here's happens:
you create display , call
start()method on it.startmethod launches new xephyr instance , helpfully changesdisplayenvironment subsequent processes connect x connect new xephyr instance.you start chrome, connects new xephyr instance. yay!
you create new display, obligingly connects first xephyr instance rather "real" x server. since has same dimensions first xephyr, takes entire space of first display , obstructs view of chrome browser created earlier. looks have 1 xephyr running there 2 of them running (which can determined using
ps, instance).the new chrome instance appears in embedded display. have 2 instances of chrome running earlier 1 cannot seen.
what have before create new display, reset display before started creating displays. here's code works:
import sys import os selenium import webdriver pyvirtualdisplay import display 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") # have 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")
Comments
Post a Comment