Получить обновленный URL в селене, используя Python
Как получить обновленный URL из браузера Firefox, используя селен и Python? Приведенный ниже код является очень хорошим рабочим примером того, что я пытаюсь сделать. Сценарий открывает URL-адрес, ищет строку поиска на веб-странице, вставляет конкретный продукт и затем выполняет поиск.
Я пытаюсь извлечь обновленный URL после завершения поиска, который должен быть https://www.myntra.com/avene-unisex-thermal-spring-water-50-ml
но я получаю https://www.myntra.com/
, Как я могу получить нужный URL?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
firefoxOptions = webdriver.FirefoxOptions()
firefoxOptions.set_preference("dom.webnotifications.enabled", False)
driver = webdriver.Firefox(firefox_options = firefoxOptions)
driver.implicitly_wait(5)
# Maximize the browser window
driver.maximize_window()
# navigate to the home page
driver.get("https://www.myntra.com/")
# Locate the text field to update values
text_field = driver.find_element_by_class_name("desktop-searchBar")
# Clears any value already present in text field
text_field.clear()
# Updates the string in search bar
text_field.send_keys("Avene Unisex Thermal Spring Water 50 ml")
text_field.send_keys(Keys.ENTER)
new_page = driver.current_url
print(new_page)
driver.close()
2 ответа
Кажется, ты был довольно близко. Вам нужно заставить WebDriverWait изменить URL-адрес, и вы можете использовать следующее решение:
Блок кода:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe') driver.get("https://www.myntra.com/") WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.desktop-searchBar"))).send_keys("Avene Unisex Thermal Spring Water 50 ml") driver.find_element_by_css_selector("a.desktop-submit").click() WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "h1.title-title"))) print(driver.current_url) driver.quit()
Консольный вывод:
https://www.myntra.com/avene-unisex-thermal-spring-water-50-ml
Вам нужно подождать после text_field.send_keys(Keys.ENTER)
чтобы получить обновленную информацию, если вы не хотите ждать, попробуйте использовать метод click() вместо send_keys