Получить обновленный URL в селене с помощью Python - PullRequest
0 голосов
/ 28 ноября 2018

Как получить обновленный 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 ]

0 голосов
/ 28 ноября 2018

Кажется, ты был довольно близко.Вам нужно заставить 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
    
0 голосов
/ 28 ноября 2018

Вам нужно подождать после text_field.send_keys(Keys.ENTER) для обновления информации, если вы не хотите ждать, попробуйте использовать метод click () вместо send_keys

...