Как отправить почтовый индекс в виде текста в окне поиска, которое находится внутри iframe, как на веб-сайте? - PullRequest
0 голосов
/ 04 сентября 2018

HTML iframe code

Я работаю над веб-автоматизацией с Selenium, и у меня возникают проблемы с вводом правильного фрейма на веб-сайте Dollar Tree для поиска магазинов в пределах определенного почтового индекса. Это то, что я до сих пор;

driver = webdriver.Chrome()
driver.get('https://www.dollartree.com/custserv/custserv.jsp?pageName=StoreLocations')

driver.switch_to_frame("Dealer locator")
time.sleep(2)
elem = driver.find_element_by_id("inputaddress")
time.sleep(2)
elem.send_keys(zipcode)

Я не уверен, нужно ли менять кадр, но я пробовал

driver.find_element_by_id
driver.find_element_by_class_name
driver.find_element_by_xpath

и все это выдает мне ту же ошибку

NoSuchElementException: no such element: Unable to locate element:

любая помощь будет оценена!

1 Ответ

0 голосов
/ 06 сентября 2018

В соответствии с HTML , которым вы поделились, для отправки последовательности символов в поле поиска сразу под элементом с текстом Найти магазин вам нужно переключитесь на требуемый iframe , вызывающий WebDriverWait , а затем снова заставьте WebDriverWait , чтобы требуемый элемент был кликабельным , и вы можете использовать следующее решение :

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

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    options = Options()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("https://www.dollartree.com/custserv/custserv.jsp?pageName=StoreLocations")
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src='//hosted.where2getit.com/dollartree/']")))
    element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.addressentry#inputaddress")))
    element.click()
    element.clear()
    element.send_keys("799003")
    
  • Снимок браузера:

dollar_tree

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...