第二个实例:http://www.meituan.com/index/changecity/initiative
针对于网站中的省份select框:
<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类提供了三种选择某一选项的方法:
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
)
|
# -*- 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标签中间的值,是显示在下拉框的值
####表单提交 如果你把表单都填好了,最后肯定要提交表单
# -*- 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
(
)
|