О программе: пусто при переключении окна в selenium с Python

#python #selenium #selenium-webdriver

Вопрос:

Задача состоит в том, чтобы щелкнуть по элементу, перейти в новое окно и получить URL-адрес нового окна. Но вместо URL-адреса отображается «о программе: пусто». Как это исправить?

 from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox(executable_path=r'C:SeleFiregeckodriver.exe')
url = driver.get('http://the-internet.herokuapp.com/windows')
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, 'a[href="/windows/new"]'))).click()
driver.switch_to.window(driver.window_handles[1])
print(driver.current_url)
driver.quit()
 

Ответ №1:

2 возможные проблемы здесь:

  1. Ждите видимости элемента, а не просто присутствия
  2. Небольшой сон после щелчка

Попробуйте это:

 from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox(executable_path=r'C:SeleFiregeckodriver.exe')
url = driver.get('http://the-internet.herokuapp.com/windows')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'a[href="/windows/new"]'))).click()
time.sleep(1)
driver.switch_to.window(driver.window_handles[1])
print(driver.current_url)
driver.quit()
 

Комментарии:

1. Я попробовал, код работает до тех пор, пока он содержит сон. Вот почему я спрашиваю, есть ли альтернатива этому? PS: Проголосовал за ответ. Из — за низкой репутации мой голос не принимается.

2. Я не знаю. Я мог бы сделать это с помощью Java или C#, но я не вижу ожидаемых условий проверки содержимого URL в Python