javascript下拉菜单与硒2 [英] javascript drop down menu with selenium 2

查看:176
本文介绍了javascript下拉菜单与硒2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试了大约一个星期,找出一个使用selenium2的下拉菜单。这是一个项目,我正在使用ITA Matrix 2自动执行航班搜索(http://matrix.itasoftware.com/ )。除了从下拉菜单中选择乘客人数以外,一切都正常。点击它可以正常工作,但尝试向其发送键或箭头命令,并且弹出时创建的新ID不会导致任何操作。我感谢任何帮助! (我是蟒蛇新手,我正在做这个项目,作为一种自学教学)。

  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机场
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( send_keys(lflight)#going航班号
driver.find_element_by_id(ita_form_location_RouteLanguageTextBox_1)send_keys(rflight)#return航班号

#problem代码:


driver.find_element_by_id(ita_form_pax_Passenger_0)。click()#。send_keys(2)
ti me.sleep(2)#allow从...下载弹出

从selenium.webdriver.common.keys导入键
driver.find_element_by_id(dijit_MenuItem_4_text)。send_keys(Keys.DOWN) #tried向下滚动
driver.find_element_by_id(ita_form_pax_Passenger_0)send_keys(Keys.DOWN)
#also只是直接发送号码:
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)


解决方案

在这种情况下,由于乘客下拉菜单实际上并不是一个下拉菜单,因此它是一些聪明的html和javascript,所以它不会像预期的那样对常规的事件做出反应。 / p>

尝试这样:
点击ID上的列表:

  ita_form_pax_Passenger_0 

然后点击XPath菜单项(用乘客人数替换'NUMBER_OF_PASSENGERS') :

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


I've been trying for about a week to figure out a drop down menu using selenium 2. It's a project I am working on to automate a flight search using ITA Matrix 2 (http://matrix.itasoftware.com/). Everything works OK except selecting the number of passengers from the drop down menu. Clicking on it works fine, but attempts to send keys or arrow commands to both it, and the new ID which is created when it pops up, don't result in any actions. I appreciate any help! (I am very new to python, I'm doing this project as a sort of self teaching exercise to learn).

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)

解决方案

In this case, it fails because the passenger drop down menu is not actually a drop down menu, it's some clever html and javascript so it won't respond to the usual events as expected.

Try this: Click on the list at ID:

ita_form_pax_Passenger_0

Then click the menu item at XPath (replace 'NUMBER_OF_PASSENGERS' with the number of passengers):

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

这篇关于javascript下拉菜单与硒2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆