我想从下拉选项中选择一个值。 html如下: (该网站为http://www.flightstats.com/go/FlightStatus/flightStatusByAirport.do)
<select id="airportQueryTime" name="airportQueryTime" onchange="selectTime(this); return true;" value="6">
<option onchange="selectTime(this); return true;" selected="selected" value="6">
6:00AM - 7:00AM
</option>
<option onchange="selectTime(this); return true;" value="7">
7:00AM - 8:00AM
</option>
<option onchange="selectTime(this); return true;" value="8">
8:00AM - 9:00AM
</option>
<option onchange="selectTime(this); return true;" value="9">
</select>
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
url = 'http://www.flightstats.com/go/FlightStatus/flightStatusByAirport.do;jsessionid=7B477D6D5CFB639F96C5D855CEB941D0.web4:8009?airport=LAX&airportQueryDate=2014-09-06&airportQueryTime=-1&airlineToFilter=&airportQueryType=0&x=0&y=0'
driver = webdriver.Firefox()
driver.get(url)
time.sleep(6)
element = driver.find_element_by_xpath("//select[@id='airportQueryTime']/option[@value='0']")
element.click()
我的问题是:
因为如果我通过ID ='airportQueryTime'找到元素,则有三个标记,而我需要的元素是第二个。如何进入第二匹配元素?
我正在尝试使用以下代码选择选项值= 0,但是selenium会引发错误。
selenium.common.exceptions.ElementNotVisibleException:消息:u'Element目前不可见,因此可能无法与'
答案 0 :(得分:2)
selenium
有一个特殊的Select
课程,用于与select
和option
代码进行互动:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
url = 'http://www.flightstats.com/go/FlightStatus/flightStatusByAirport.do;jsessionid=7B477D6D5CFB639F96C5D855CEB941D0.web4:8009?airport=LAX&airportQueryDate=2014-09-06&airportQueryTime=-1&airlineToFilter=&airportQueryType=0&x=0&y=0'
driver = webdriver.Firefox()
driver.get(url)
select = Select(driver.find_element_by_xpath("//div[@class='uiComponent674']//select[@id='airportQueryTime']"))
# print all the options
print [element.text for element in select.options]
# select option by text
select.select_by_visible_text('6:00AM - 7:00AM')
请注意,由于页面上有多个airportQueryTime
个ID的元素,因此我们必须在div
范围内使用uiComponent674
类搜索它(用于选择时间间隔的块) )。