selenium 操作 select

第二个实例:http://www.meituan.com/index/changecity/initiative
针对于网站中的省份select框:

Python
<select name="province" class="ui-select-small" id="yui_3_16_0_1_1472275682924_335"> <option value="-1">--省--</option> <option value="110000" selected="selected">北京</option> <option value="120000">天津</option> <option value="130000">河北</option> <option value="140000">山西</option> .... </select>
1
2
3
4
5
6
7
8
< select name = "province" class = "ui-select-small" id = "yui_3_16_0_1_1472275682924_335" >
< option value = "-1" > --省 -- < / option >
< option value = "110000" selected = "selected" >北京 < / option >
< option value = "120000" >天津 < / option >
< option value = "130000" >河北 < / option >
< option value = "140000" >山西 < / option >
     . . . .
< / select >

WebDriver中提供了一个叫Select的方法,可以帮助我们完成这些事情。首先获取了select元素,也就是下拉选项卡,将元素实例化为Select类对象。
Select类提供了三种选择某一选项的方法:

Python
select_by_index(index) select_by_value(value) select_by_visible_text(text)
1
2
3
select_by_index ( index )
select_by_value ( value )
select_by_visible_text ( text )
Python
# -*- coding:utf-8 -*- from <span class="wp_keywordlink"><a href="http://www.168seo.cn/selenium/" title="selenium">selenium</a></span>.webdriver.support.ui import Select from <span class="wp_keywordlink"><a href="http://www.168seo.cn/selenium/" title="selenium">selenium</a></span> import webdriver from time import sleep chromedriver = "./chromedriver" driver = webdriver.Chrome(executable_path=chromedriver) driver.get('http://www.meituan.com/index/changecity/initiative') s1 = Select(driver.find_element_by_name('province')) # 实例化Select print 'start watings 5s' sleep(5) # seconds print 'select_by_index' s1.select_by_index(2) # 选择第二项选项 sleep(5) # seconds print 'select_by_value' s1.select_by_value("130000") # 选择value="130000"的项 sleep(5) # seconds print 'select_by_visible_text' s1.select_by_visible_text("山西") # 选择text="山西"的值,即在下拉时我们可以看到的文本 print 'end'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# -*- coding:utf-8 -*-
from selenium . webdriver . support . ui import Select
from selenium import webdriver
from time import sleep
chromedriver = "./chromedriver"
driver = webdriver . Chrome ( executable_path = chromedriver )
 
driver . get ( 'http://www.meituan.com/index/changecity/initiative' )
s1 = Select ( driver . find_element_by_name ( 'province' ) )    # 实例化Select
print 'start watings 5s'
sleep ( 5 ) # seconds
print 'select_by_index'
s1 . select_by_index ( 2 )    # 选择第二项选项
 
sleep ( 5 ) # seconds
print 'select_by_value'
s1 . select_by_value ( "130000" )    # 选择value="130000"的项
 
sleep ( 5 ) # seconds
print 'select_by_visible_text'
s1 . select_by_visible_text ( "山西" )    # 选择text="山西"的值,即在下拉时我们可以看到的文本
print 'end'

以上是三种选择下拉框的方式,注意:
index从0开始
value是option标签的一个属性值,并不是显示在下拉框中的值
visible_text是在option标签中间的值,是显示在下拉框的值

####表单提交 如果你把表单都填好了,最后肯定要提交表单

Python
# -*- coding:utf-8 -*- from selenium.webdriver.support.ui import Select from selenium import webdriver from time import sleep chromedriver = "./chromedriver" driver = webdriver.Chrome(executable_path=chromedriver) driver.get('http://www.meituan.com/index/changecity/initiative') #Ajax未加载完成,需要sleep sleep(4) s1 = Select(driver.find_element_by_name('province')) # 实例化Select s1.select_by_visible_text("山西") #s1.select_by_index(4) sleep(4) # seconds s2 = Select(driver.find_element_by_name('city')) # 实例化Select s2.select_by_visible_text("大同") sleep(4) # seconds #三种方式 #是个坑,容性问题 #driver.find_element_by_class_name('btn btn-mini').submit() #driver.find_element_by_id("changeCity").submit() #driver.find_element_by_xpath('//*[@value="确定"]').submit() driver.find_element_by_xpath('//*[@value="确定"]').click()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# -*- coding:utf-8 -*-
from selenium . webdriver . support . ui import Select
from selenium import webdriver
from time import sleep
 
chromedriver = "./chromedriver"
driver = webdriver . Chrome ( executable_path = chromedriver )
 
driver . get ( 'http://www.meituan.com/index/changecity/initiative' )
#Ajax未加载完成,需要sleep
sleep ( 4 )
s1 = Select ( driver . find_element_by_name ( 'province' ) )    # 实例化Select
 
s1 . select_by_visible_text ( "山西" )
#s1.select_by_index(4)
sleep ( 4 ) # seconds
s2 = Select ( driver . find_element_by_name ( 'city' ) )    # 实例化Select
s2 . select_by_visible_text ( "大同" )
sleep ( 4 ) # seconds
#三种方式
#是个坑,容性问题
#driver.find_element_by_class_name('btn btn-mini').submit()
#driver.find_element_by_id("changeCity").submit()
#driver.find_element_by_xpath('//*[@value="确定"]').submit()
driver . find_element_by_xpath ( '//*[@value="确定"]' ) . click ( )



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值