Если я запускаю код без строки chrome_options.add_argument("--headless"), driver.window_handles возвращает 2 windows, если я запускаю в безголовом режиме, driver.window_handles возвращает только 1 окно. Пробовал добавлять задержку до 300 секунд, не помогает. Затем код выходит из строя, потому что драйвер не может найти кнопку в неоткрытом окне. Взгляните на код:
Код: Выделить всё
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("--start-maximized")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument(f"user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0")
chrome_options.add_argument('--window-size=1920,1080')
driver = webdriver.Chrome(options=chrome_options)
wait = WebDriverWait(driver, 30)
def main():
driver.get("...")
time.sleep(60) # no matter how long is the delay, the outcome doesn`t change
button = wait.until(ec.element_to_be_clickable((By.XPATH, "...")))
button.click()
# after button above is clicked, a new window must be opened
time.sleep(60)
print(f"WINDOW HANDLES: {driver.window_handles}")
# for headless chrome prints WINDOW HANDLES: ['24931185E13B5F865C2AF60824C63581']
# normally prints WINDOW HANDLES: ['2C26F32DB25AF6BA3385E57788A9A0F0', '573A622D02011B22274612B2AA81C8DC']
driver.switch_to.window(driver.window_handles[-1])
button = wait.until(ec.element_to_be_clickable((By.XPATH, "...")))
button.click()
# in headless mode raises exception as new window where button is to be found is not opened
)
Подробнее здесь: https://stackoverflow.com/questions/793 ... ew-windows
Мобильная версия