выпадающее меню javascript с selenium 2

#javascript #python #selenium #drop-down-menu #webdriver

#javascript #python #selenium #выпадающее меню #webdriver

Вопрос:

Я около недели пытался найти выпадающее меню с использованием selenium 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. 1 для matrix.itasoftware.com

2. Вам повезло с matrix? Я работаю над тем же самым…

Ответ №1:

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

Попробуйте это: щелкните по списку в ID:

 ita_form_pax_Passenger_0
  

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

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

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

1. немного поздно возвращаюсь к вам (только что слил старую учетную запись). Но я считаю, что это помогло тогда, и я хотел бы поблагодарить вас.