带有selenium 2的javascript下拉菜单

2024-05-29 04:09:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Selenium2设计了一个下拉菜单。这是我正在进行的一个项目,使用ITA Matrix 2实现航班搜索的自动化(http://matrix.itasoftware.com/). 除了从下拉菜单中选择乘客人数外,一切正常。单击它可以正常工作,但是尝试向它和弹出时创建的新ID发送键或箭头命令,不会导致任何操作。谢谢你的帮助!(我对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)

Tags: fromimportformsendidnumberbytime
1条回答
网友
1楼 · 发布于 2024-05-29 04:09:54

在这种情况下,它失败了,因为乘客下拉菜单实际上不是下拉菜单,而是一些聪明的html和javascript,因此它不会像预期的那样响应通常的事件。在

试试这个: 单击ID为的列表:

ita_form_pax_Passenger_0

然后单击XPath处的菜单项(将“NUMBER_OF_PASSENGERS”替换为“乘客数”):

^{pr2}$

相关问题 更多 >

    热门问题