1

我在 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 window

Chrome 在安装了扩展程序后无法在无头模式下工作,因此我不得不使用 pyvirtualdisplay。
问题是Displaypyvirtualdisplay打开一个浏览器窗口,因此确认窗口永远不会出现。如何允许 pyvirtualdisplay 打开新窗口并在它们之间切换?

4

1 回答 1

0

原来 pyvirtualdisplay 确实打开了一个窗口,但它的大小是 1px x 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)
于 2021-10-16T21:32:57.557 回答