Как отправить текст в окно поиска геолокации по URL через Selenium - PullRequest
0 голосов
/ 31 августа 2018

HTML-код

Я пытаюсь ввести ввод (почтовый индекс) в локатор магазина.

zipcode = input("What zip code would you like to search? ")

driver = webdriver.Firefox()
driver.get('http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx')
driver.maximize_window()
print "page accesses"

inputElement = driver.find_element_by_xpath("//*[@id='address']")
inputElement.send_key(zipcode)
inputElement.send_keys(Keys.ENTER)

Я также пробовал несколько различных select_by методов в WebDriver. Кто-нибудь может подтолкнуть меня в правильном направлении? Я много использовал селен в прошлом, может быть, это просто невозможно на этом конкретном сайте? Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Чтобы отправить последовательность символов (почтовый индекс) в поле поиска локатора магазина, вам необходимо:

  • Сначала вызовите WebDriverWait для желаемого кадра, который будет доступен, и переключитесь на него
  • Затем снова вызовите WebDriverWait , чтобы желаемый элемент был активным для клика , и вызовите click()
  • Наконец, снова вызовите WebDriverWait , чтобы требуемый элемент был активным для клика и вызывал send_keys()

  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = Options()
    options.binary_location = r'C:\Program Files\Firefox Nightly\firefox.exe'
    driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\GeckoDriver\geckodriver-v0.20.1-win64\geckodriver.exe')
    driver.get("http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx")
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"StoreLocator")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.closeBtn>img[src='images/dollargeneral_new_bubble_close.png']"))).click()
    zipcode = input("What zip code would you like to search? ")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control#address"))).send_keys(zipcode)
    
  • Снимок браузера:

zip

0 голосов
/ 31 августа 2018

smit9234 правильно - вам нужно переключать кадры. Это работает:

from selenium import webdriver

zipcode = "91307" #input("What zip code would you like to search? ")

driver = webdriver.Chrome()
driver.get('http://www2.dollargeneral.com/About-Us/pages/storelocator.aspx')


driver.switch_to_frame("StoreLocator") 
el = driver.find_element_by_id("address")

el.send_keys(zipcode)
...