выпадающее меню javascript с селеном 2 - PullRequest
1 голос
/ 05 ноября 2011

Я около недели пытаюсь найти выпадающее меню, используя селен 2. Это проект, над которым я работаю, чтобы автоматизировать поиск рейсов с помощью ITA Matrix 2 (http://matrix.itasoftware.com/). Все работает нормально, кроме выбора номера пассажиров из выпадающего меню. Нажатие на него работает нормально, но попытки отправить ключи или команды со стрелками на него, а также новый идентификатор, который создается при его всплывающем окне, не приводят к каким-либо действиям. Я ценю любую помощь ! (Я очень новичок в Python, я делаю этот проект как своего рода упражнение для самостоятельного обучения).

from selenium import webdriver
from time import sleep
import time

driver = webdriver.Firefox()
driver.get("http://matrix.itasoftware.com/")


driver.find_element_by_id("advancedfrom1").send_keys(lport) #starting airport
driver.find_element_by_id("advancedto1").send_keys(rport) #destination airport
driver.find_element_by_id("advanced_rtDeparture").send_keys(ldate) #leaving date
driver.find_element_by_id("advanced_rtReturn").send_keys(rdate)    #return date
driver.find_element_by_id("ita_form_location_RouteLanguageTextBox_0").send_keys(lflight) #going flight number
driver.find_element_by_id("ita_form_location_RouteLanguageTextBox_1").send_keys(rflight) #return flight number

#problem code:


driver.find_element_by_id("ita_form_pax_Passenger_0").click()#.send_keys("2")
time.sleep(2)  #allow drop down to pop up

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("dijit_MenuItem_4_text").send_keys(Keys.DOWN)  #tried to scroll down
driver.find_element_by_id("ita_form_pax_Passenger_0").send_keys(Keys.DOWN)
#also tried just sending the number directly:
driver.find_element_by_id("dijit_MenuItem_4_text").send_keys(numpax)
driver.find_element_by_id("ita_form_pax_Passenger_0").send_keys(numpax)

1 Ответ

2 голосов
/ 21 ноября 2011

В этом случае происходит сбой, потому что раскрывающееся меню пассажира на самом деле не является раскрывающимся меню, это какой-то умный html и javascript, поэтому он не реагирует на обычные события, как ожидалось.

Попробуйте это: Нажмите на список в ID:

ita_form_pax_Passenger_0

Затем щелкните пункт меню в XPath (замените 'NUMBER_OF_PASSENGERS' на количество пассажиров):

//td[contains(@id,'dijit_MenuItem')][text()='NUMBER_OF_PASSENGERS']
...