You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GoIndigo单程机票预订中,Selenium WebDriver无法定位出发/到达元素求助

Troubleshooting Source/Destination Element Locating for GoIndigo Booking with Selenium

Hey there! Let’s work through this GoIndigo flight booking element issue — I’ve dealt with plenty of finicky airline site elements before, so let’s break down the most likely fixes:

Common Issues & Fixes

1. Check if Elements Are Inside an Iframe

Many airline sites nest their search widgets inside <iframe> tags to isolate components. If your source/destination fields are tucked inside one, you’ll need to switch to that iframe first before trying to locate them:

# Python example
from selenium.webdriver.common.by import By

# Locate the iframe (adjust the locator to match your page's iframe)
iframe = driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe)

# Now try locating your source/destination elements here
source_field = driver.find_element(By.XPATH, "//input[@placeholder='From']")

# Don't forget to switch back to default content if you need to interact with other elements later
driver.switch_to.default_content()

2. Use Explicit Waits Instead of Immediate Lookups

GoIndigo’s page loads many components dynamically after the initial page render. Trying to find elements right away will often fail because they haven’t loaded yet. Use explicit waits to wait for elements to become interactable:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait up to 10 seconds for the source field to be clickable
source_field = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "input[placeholder='From']"))
)
source_field.click()
source_field.send_keys("Delhi")

3. Validate Your Locators Are Stable

Avoid using dynamic IDs or classes (they often have random strings that change on refresh). Instead, use locators that target unique, static attributes:

  • XPath example: //div[contains(@class, 'origin-search')]//input (targets input inside a stable origin search container)
  • CSS Selector example: input[name='origin'] (uses a static name attribute)

Pro tip: Use your browser’s dev tools (right-click → Inspect) to test locators in the console. For Chrome, type $x("//input[@placeholder='From']") to see if it finds the correct element.

4. Handle Overlapping Elements or Popups

GoIndigo often shows cookie consent popups or promotional banners that can block access to the search fields. Always close these first before interacting with the source/destination fields:

from selenium.common.exceptions import NoSuchElementException

try:
    # Adjust the locator to match the close button on your page
    cookie_close_btn = driver.find_element(By.ID, "onetrust-close-btn-container")
    cookie_close_btn.click()
except NoSuchElementException:
    # If the popup doesn't appear, just skip this step
    pass

5. Trigger a Click to Activate the Field

Some search fields are hidden until you click their container div. For example, the source field might be wrapped in a clickable div that reveals the input or dropdown when clicked:

# Click the source container first to activate the field
source_container = driver.find_element(By.XPATH, "//div[text()='From']/parent::div")
source_container.click()

# Now send keys to the visible input
source_input = driver.find_element(By.XPATH, "//input[@aria-label='From']")
source_input.send_keys("Mumbai")

Start by checking for iframes first — that’s the most common gotcha with airline sites. If that doesn’t work, move on to explicit waits and validating your locators.

内容的提问来源于stack exchange,提问作者ranjith kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:56:10