如果您Element is not currently interactable检查该元素是否未禁用且可见。如果你想hack执行它JS来启用它。
我访问的主页id ita_form_location_RouteLanguageTextBox_0不存在,在航班一号下也没有Enter routing code。我可以看到文本框说airport city or city name
此外,如果您有 id 更喜欢使用find_element_by_idif not 尝试使用css selectorif you can 而不是xpath. 它更清洁。
更新
这是一个工作脚本:
如上所述,elements选定的不是visible. 实际完成的是,有 5-6 个不同的elements全部隐藏,当您单击显示高级路线时,它会选择 2 个随机路线并使它们可见。
所以id并不总是一样的。如果您使用相同的 id,您element有时会被隐藏(因为它会选择随机 id),因此selenium无法处理它。我做了一个选择器,将 2 隐藏elements
from selenium import webdriver
import selenium.webdriver.support.ui as ui
driver = webdriver.Firefox()
driver.get("http://matrix.itasoftware.com/")
#click on the multi tab
tab = driver.find_element_by_id("ita_layout_TabContainer_0_tablist_ita_form_multislice_MultiSliceForm_0").click()
#click on the advanced routes
advanced_routing=ui.WebDriverWait(driver, 10).until(
lambda driver : driver.find_element_by_id("sites_matrix_layout_RouteLanguageToggleLink_1")
)
advanced_routing.click()
#get all visible elements with id like ita_form_location_RouteLanguageTextBox. its similar to regex ita_form_location_RouteLanguageTextBox.*
element = ui.WebDriverWait(driver, 10).until(
lambda driver : driver.find_elements_by_css_selector("[id*=ita_form_multislice_MultiSliceRow] [id*=ita_form_location_RouteLanguageTextBox]")
)
element[0].send_keys("foo")
element[1].send_keys("bar")
import time
time.sleep(20)