Вы должны использовать точку .
в начале второго xpath, чтобы создать относительный xpath и искать только в одной строке. Без точки поиск во всех HTML.
badge = r.find_elements_by_xpath('.//div[@class="airport-icons"]//app-badge')
find_elements
(с s
в elements
) никогда не вызывает ошибку, но возвращает пустой список, и вы должны проверить, получается ли пустой список
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path=r'C:\Program Files\chromedriver.exe')
#wait = WebDriverWait(driver, 10)
driver.get("https://www.aopa.org/destinations/airports/state/AL")
time.sleep(3)
airport_list = []
paved_runway = []
airport_row = driver.find_elements_by_xpath('//div[@class = "state-airports__airport"]')
print(len(airport_row))
for r in airport_row:
#print(r.text)
airport_list.append(r.text)
badge = r.find_elements_by_xpath('.//div[@class="airport-icons"]//app-badge')
if badge:
print(r.text + ": Y")
paved_runway.append(r.text + ": Y")
else:
print(r.text + ": N")
paved_runway.append(r.text + ": N")
driver.close()
Результат:
315
00AL - Epps Airpark: Y
01AL - Ware Island: Y
02A - Chilton County Airport: N
02AL - Bass Field: Y
03AL - Highland Medical Center: Y
04A - Frank Sikes Airport: N
04AL - Anniston Ahp (Anniston Army Depot): Y
05AL - Allen Stagefield Ahp: Y
06A - Moton Field Municipal: N
06AL - Brown Stagefield Ahp: Y
07A - Franklin Field: N
07AL - Tac X Stagefield Ahp: Y
08A - Wetumpka Municipal Airport: N
08AL - Little Lagoon: Y
09A - Butler-Choctaw County Airport: N
0A8 - Bibb County Airport: N
0AL0 - Huntsville Field: Y
0AL1 - Resort: Y
0AL2 - Clay County Hospital: Y