Как работать с окнами (двумя браузерами) в selenium?
Мой селениум доходит до этой кнопки (кликает по ней)

После клика, выходит такое окно

Мне нужно написать в поле имя и фамилию, но не выходит, как будто селениум работает с браузером, а не с этим окном.
Так это выглядит в меню "пуск"
Так это выглядит на мониторе
Работаю с Xpath, помогите как можно переключится между ними? iframe в просмотре элемента нету
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
binary_yandex_driver_file = 'yandexdriver.exe' # path to YandexDriver
driver = webdriver.Chrome(binary_yandex_driver_file, options=options)
driver.get('https://elibrary.ru/')
xpath='/html/body/table/tbody/tr/td/table[1]/tbody/tr/td[1]/table/tbody/tr[2]/td/div/div/table[2]/tbody/tr/td[2]/a'
driver.find_element_by_xpath(xpath).click()
xpath2 = '/html/body/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr/td/table[6]/tbody/tr[1]/td[3]/a'
driver.find_element_by_xpath(xpath2).click()
form_xpath = '/html/body/center/form/table[1]/tbody/tr/td[1]/input'
driver.find_element_by_xpath(form_xpath).send_keys('Kromina')
driver.quit()
Ответы (1 шт):
Для переключения между окнами вам надо запомнить дескриптор первого окна driver.current_window_handle и затем, когда появиться второе окно переключиться на него по другому дескриптору. После закрытия второго окна не забудьте переместить фокус на первое driver.switch_to.window(original_window).
Работа с окнами и вкладками.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
url = 'https://elibrary.ru/'
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
wait = WebDriverWait(driver, 10)
original_window = driver.current_window_handle
assert len(driver.window_handles) == 1
try:
xpath = '/html/body/table/tbody/tr/td/table[1]/tbody/tr/td[1]/table/tbody/tr[2]/td/div/div/table[2]/tbody/tr/td[2]/a'
elem = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, xpath)))
elem.click()
xpath2 = '/html/body/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr/td/table[6]/tbody/tr[1]/td[3]/a'
elem2 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, xpath2)))
elem2.click()
wait.until(EC.number_of_windows_to_be(2))
for window_handle in driver.window_handles:
if window_handle != original_window:
driver.switch_to.window(window_handle)
break
form_xpath = '/html/body/center/form/table[1]/tbody/tr/td[1]/input'
elem3 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, form_xpath)))
print(elem3)
elem3.send_keys('Kromina')
time.sleep(5)
finally:
driver.quit()
----------------------------
<selenium.webdriver.remote.webelement.WebElement (session="10d850bb2265c2dcd51b5804d5e786bd", element="bc330293-fa69-487d-8858-21c63b35ea15")>


