Экземпляр браузера не запускается внутри виртуального дисплея с помощью xlib selenium ⇐ Python

Программы на Python
Anonymous
Экземпляр браузера не запускается внутри виртуального дисплея с помощью xlib selenium

Сообщение Anonymous »

Привет, у меня проблема: я новичок в xlib с Python, я пытаюсь запустить экземпляр браузера внутри vd
ошибка заключается в том, что vd успешно запускается, и экземпляр браузера успешно запускается, но не внутри vd, я думаю, я реализован это неправильно, я пытался добавить обработку ошибок, но ничего не сломалось

Код: Выделить всё

########### class for launching vd

class DisplayWindow:
def __init__(self, width, height, title):
self.display = Xlib.display.Display()
self.screen = self.display.screen()

# Create window attributes manually
self.attributes = {
"background_pixel": self.screen.white_pixel,
"event_mask": Xlib.X.ExposureMask | Xlib.X.ButtonPressMask,
"border_width": 10,
"depth": self.screen.root_depth,
"class": Xlib.X.InputOutput,
"visual": Xlib.X.CopyFromParent
}

self.window = self.create_window(width, height)
self.set_window_title(title)

def create_window(self, width, height):
return self.screen.root.create_window(
0, 0,  # x, y coordinates
width, height,  # width, height
**self.attributes  # Use dictionary unpacking for attributes
)

def set_window_title(self, title):
self.window.set_wm_name(title)

def launch_display(self):
self.window.map()
self.display.sync()
print(f"Display ID ---->{ self.display.get_display_name()}")

async def drag_and_drop(self, x1, y1, x2, y2):

self.window.warp_pointer(x1, y1)
self.display.sync()

# Simulate left mouse button press
fake_input(self.display, Xlib.X.ButtonPress, 1)
self.display.sync()

# Move the mouse pointer to the ending coordinates
self.window.warp_pointer(x2, y2)
self.display.sync()

# Simulate left mouse button release
fake_input(self.display, Xlib.X.ButtonRelease, 1)
self.display.sync()
это моя реализация

Код: Выделить всё


display_window.launch_display()
os.environ['DISPLAY'] = ':0'

def is_display_available(display_id):
try:
display = Xlib.display.Display(display_id)
return True
except Xlib.error.DisplayConnectionError:
return False

if not is_display_available(':0'):
print("Virtual display is not available")
exit(1)

options = webdriver.ChromeOptions()
#options.headless = True
options.add_argument('--display=:0')
options.add_argument("--window-size=945,1028")
options.add_experimental_option("prefs", {"general.enable_javascript": True})

async with webdriver.Chrome(options=options) as driver:

pointer = driver.current_pointer
#await driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": headers})

tasks = [initialize( proxy,  pointer, driver) for _ in range(1)]
for task in tasks:
await task

я пробовал переписать код 3 раза, работая с другими библиотеками vd, но они не подходят для этой задачи

Подробнее здесь: https://stackoverflow.com/questions/790 ... b-selenium

Вернуться в «Python»