我用python编写了一个刮板程序,它使用selenium、chrome和添加的扩展。刮板在本地工作,显示是可见的,但当我尝试在headless模式下运行它时,就不会这样做了。
在刮过的网站上有一个按钮,它会自动打开一个新的窗口(我不能通过URL访问它,以便在一个新的选项卡中打开它)。
click_button() # the button opens a new window with a confirmation button
driver.switch_to.window(driver.window_handles[1]) # switching to the confirmation window
click_confirm() # when confirm is clicked the window closes automatically
driver.switch_to.window(driver.window_handles[0]) # switching back to original windowChrome在安装扩展时不能在无头环境下工作,所以我不得不使用pyvirtualdisplay。
问题是,Display of pyvirtualdisplay只打开一个浏览器窗口,因此永远不会出现确认窗口。如何允许pyvirtualdisplay打开新窗口并在它们之间交替使用?
发布于 2021-10-16 21:32:57
事实证明,pyvirtualdisplay确实打开了一个窗口,但是它的大小是1 1px乘1 1px。显然,设置webdriver大小的方式在pyvirtualdisplay中不能正常工作:
options = Options()
options.add_argument('--window-size="1980,1080"')
driver = webdriver.Chrome(executable_path=chrome_driver_path, options=options)设置它像吼叫解决了我的问题和窗口是一个正常的大小:
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.set_window_size(1980,1080)https://stackoverflow.com/questions/69591229
复制相似问题