Как обрабатывать всплывающее окно «почтовый индекс» без iframe в Amazon, используя программирование на Selenium и python

#iframe #selenium-chromedriver #popupwindow #zipcode #web-scraping-language

#iframe — фрейм #селен-хромовый преобразователь #popupwindow #почтовый индекс #web-scraping-language

Вопрос:

Я почти пробую каждый код, который связан с всплывающими окнами, используя язык программирования python coding и selenium, но ни один из них не является рабочей send.key("XXXXX") командой в zip-коде. Потому что в основном они связаны iframe с исходным кодом страницы, поэтому либо он обрабатывается с помощью window switch_to.frame() , либо switch_to.window . В моем случае iframe на странице нет источника, и всплывающие окна не отправляют ключи с этим введенным почтовым индексом. Поэтому мне нужна помощь для обработки таких всплывающих окон python и программирования selenium для обработки всплывающих окон.

 driver.switch_to.frame()
driver.switch_to.window()
driver.switch_to.alert()
 
 

    browser.get('www.amazon.com')
        browser.find_element_by_xpath("""//*[@id="nav-global-location-popover-link"]""").click()
        browser.set_page_load_timeout(1000)
        browser.switch_to.active_element()
        browser.find_element_by_xpath('//*[@id="GLUXZipUpdateInput"]').send_keys("85224")
 

Ответ №1:

Вам нужно нажать на панель местоположения доставки и программно установить pin-код, как показано ниже

 loc = str(driver.find_element_by_id("glow-ingress-line2").text).strip().replace(" ", "")
        if loc == "India" in driver.page_source:
            WebDriverWait(driver, 30).until(
                EC.presence_of_element_located((By.ID, "nav-packard-glow-loc-icon")))
            driver.find_element_by_id("nav-packard-glow-loc-icon").click()
            WebDriverWait(driver, 30).until(
                EC.presence_of_element_located((By.ID, "GLUXZipUpdateInput")))
            driver.find_element_by_id("GLUXZipUpdateInput").send_keys(10001)

            ActionChains(driver).send_keys(Keys.SHIFT, Keys.ENTER).perform()

            WebDriverWait(driver, 30).until(
                EC.presence_of_element_located((By.ID, "GLUXConfirmClose")))
            driver.refresh() 

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

1. Пожалуйста, не публикуйте только код в качестве ответа, но также предоставьте объяснение того, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением обычно более полезны и качественны и с большей вероятностью привлекут голоса.