操作下拉菜单,利用select模块处理下拉框
分类:www.澳门新萄京赌场

(一) 操作下拉菜单,利用select模块处理下拉框。Select类

测验进度中平时遇上下来菜单,举例说分页,每页突显的条数,甚至语言的切换,超多时候平常是以下来菜单的花样表现,下边大家看一下selenium如哪个地区理下来菜单。

from selenium.webdriver.support.select import Select
def select_value(self, css, value):
    '''
    选中下拉菜单中接纳,by value

在使用selenium实行UI自动化测量检验进度中,常常会遇上下拉框选项,那篇博客,就介绍下何以采纳selenium的Select模块来对行业内部select下拉框实行操作。。。

Select类是selenium的三个特定的类,用来与下拉菜单和列表人机联作。

第少年老成selenium 很人性化的给提供了三个Select的模块,供管理下来菜单,首先我们需求导入Select,通过from selenium.webdriver.support.select import Select来导入。

    Usage:
    driver.select_value("css=>#el", value)
    '''
    try:
        self.element_wait(css)
    except Exception as e:

 

下拉菜单和列表是经过HTML的<select> 成分达成的。选择项是透过<select>中的<option>成分完毕的。使用前应用上面包车型大巴言语导入模块。

Select中提供多少个用于固定的option的艺术,上面看一下切实的不二等秘书籍

    else:
        el = self.get_element(css)
        Select(el).select_by_value(value)

第风流倜傥导入Select模块:

from selenium.webdriver.support.ui import Select

第风流罗曼蒂克把Select方法总计了弹指间分成三大类:

Select(driver.find_element_by_id("id_language")).select_by_value('en')

1 # coding=utf-8
2 from selenium import webdriver
3 from selenium.webdriver.support.select import Select

(二) Select类的信守及情势

1.选拔列表

操作下拉菜单,利用select模块处理下拉框。用Select来定位到select标签,而后再经过value来定位,

感兴趣的能够将鼠标指向Select,然后按住Ctrl鼠标单击,查看Select模块的源码,是如何定义封装Select的顺序艺术的。

功能/属性

简单说明

all_selected_options
获取下拉菜单和列表中被选中的所有选项内容
first_selected_option
获取下拉菜单和列表的第一个选项
options
获取下拉菜单和列表的所有选项
  • select_by_index(self, index)      #以index属性值来搜寻相称的成分并精选;
  • select_by_value(self, value)           #以value属性值来寻觅该option并采用;
  • select_by_visible_text(self, text)     #以text文本值来查找相配的成分并选择;
  • first_selected_option(self)               #采取第一个option 选项 ;

当然Select类中包括多少个用于固定的option的不二诀要,如下:

1、Select提供了两种选择某风姿罗曼蒂克项的法子

 

为了测验以上的主意,从网络找的了二个总结的页面,来援救测量试验

options(self):

1 select_by_index          # 通过索引定位
2 select_by_value          # 通过value值定位
3 select_by_visible_text   # 通过文本值定位

方法

简单说明

deselect_all()
清除多选下拉菜单和列表的所有选择项
deselect_by_index(index)
根据索引清除下拉菜单和列表的选择项
Index:要清除目标的索引
deselect_by_value(value)
清除和给定参数匹配的下拉菜单和列表的选择项
value:要清除目标选择项的value属性
deselect_by_visible_text(text)
清除和给定参数匹配的下拉菜单和列表的选择项
text:要清除目标选择项的文本值
select_by_index(index)
根据索引选择下拉菜单和列表的选择项
select_by_value(value)
选择和给定参数匹配的下拉菜单和列表的选择项
select_by_visible_text(text)
选择和给定参数匹配的下拉菜单和列表的选择项
<html>
<body>
    <form>
        <select name="cars">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="fiat" selected="selected">Fiat</option>
            <option value="audi">Audi</option>
        </select>
    </form>
</body>
</html>

 此函数再次回到二个归属此select标签的option列表,临时用;

注意事项:

 

针对按索引进行切换option属性示举个例子下。常用艺术

all_selected_options(self):

index索引是从“0”早前;

(三)  示例(检查12306挂号页面包车型地铁证件类型是还是不是与预期意气风发致)

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
time.sleep(2)   #默认option显示"Fiat"
S = Select(driver.find_element_by_name('cars')).select_by_index(0)  #实例化Select,按索引选择option。索引以0开始
time.sleep(2)   #切换后option显示"Volvo"
driver.quit()

 此函数重临二个100%接受了的option的列表,偶尔用;

value是option标签的三个属性值,并非显得在下拉框中的值;

from selenium import webdriver
import unittest
from selenium.webdriver.support.ui import Select
class Register(unittest.TestCase):
  ...省略setup(这段就不注释了)
    def test_register(self):
        card_type =['二代身份证','港澳通行证','台湾通行证','护照']
        card_type_options = []
        #定位证件类型字段,作为Select类的对象实例
        select_card_type = Select(self.driver.find_element_by_id('cardType'))
        #检查默认选项是否为'二代身份证'
        self.assertTrue(select_card_type.first_selected_option.text == '二代身份证')
        #页面提供的证件类型选项数量是否为4个
        self.assertEqual(4,len(select_card_type.options))
        #将页面上每个选项的文本值添加到 card_type_options[]
        for s in select_card_type.options:
            card_type_options.append(s.text)
        #检查页面上证件类型选项是否与预期一致
        self.assertListEqual(card_type,card_type_options)
        select_card_type.select_by_index(1) #选择索引为1的选项(港澳通行证)
        #检查选择港澳通行证时,是否显示出生日期字段
        self.assertTrue(self.driver.find_element_by_id('born_date').is_displayed())
        select_card_type.select_by_value('B') #选择value = 'B'的选项(护照)
        select_card_type.select_by_visible_text('二代身份证') #选择文本为 二代身份证的选项
   ...省略tearDown(这段就不注释了)

针对按value举办切换option属性示比方下。常用艺术

first_selected_option(self):

visible_text是在option标签中间的值,是显得在下拉框的值;

 

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
time.sleep(2)   #默认option显示"Fiat"
S = Select(driver.find_element_by_name('cars')).select_by_value('saab')  #实例化Select,按value选择option。这里的value是标签的属性value,<option value="saab">Saab</option>
time.sleep(2)   #切换后option显示"saab"
driver.quit()

 此函数重临第贰个只怕当前被选中的option成分,不经常用;

 

针对按text文本进行切换option属性示例如下。常用艺术

select_by_value(self, value):

2、Select提供了二种回到options消息的方式

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
time.sleep(2)   #默认option显示"Fiat"
S = Select(driver.find_element_by_name('cars')).select_by_visible_text ('Audi')  #实例化Select,text值是选择的我们下拉菜单时看到的值
time.sleep(2)   #切换后option显示"Audi"
driver.quit()

 以传播的value属性值来开展相配,并选拔;

1 options                  # 返回select元素所有的options
2 all_selected_options     # 返回select元素中所有已选中的选项
3 first_selected_options   # 返回select元素中选中的第一个选项

使用first_selected_option(self卡塔尔国来切换来第三个option,该方法与select_by_index(0卡塔尔(英语:State of Qatar)完成的功力等同,直接看一下代码施行效果,详细的就解释了

select_by_index(self, index):

注意事项:

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
time.sleep(2)   #默认option显示"Fiat"
S = Select(driver.find_element_by_name('cars')).first_selected_option
time.sleep(2)   #切换后option显示"Audi"
driver.quit()

 以扩散的index属性值来查究相称的成分并精选;

这三种方法的功效是翻开已入选的因素是不是是自个儿盼望选拔的:

2.消逝选用列表

select_by_visible_text(self, text)

options:提供全部选项的成分列表;

第风流倜傥类大家讲课了什么样选用列表,总共介绍了4种情势,可是既然能够接收大家就能够消逝选拔,而前两种撤消方法能够与选取生机勃勃大器晚成对应,上边大家看下如何消弭接受

 选取具备有文件显示的option成分,如<option value="foo">Bar</option>;

all_selected_options:提供具备被选中选项的要素列表;

  • deselect_by_index(self, index)              #以index属性值来查找匹配的要素并收回选用;
  • deselect_by_value(self, value)              #以value属性值来找寻该option并撤废选取;
  • deselect_by_visible_text(self, text)   #以text文本值来搜求相称的要素并撤回选用;
  • deselect_all(self)                                    #将有所选择消逝;

deselect_all(self):

first_selected_option:提供第贰个被选中的选项因素;

因为依照上面的页面示例,大家切换实现之后是从未办法解除,上面大家来推广一下html <select> 标签的multiple 属性,multiple 属性规定可同时选用八个筛选,能够把 multiple 属性与 size 属性合作使用,来定义可知选项的数目,所以大家会涉及到撤销格局。

 将享有采用灭绝;

 

上面是不含有multiple 和 包罗 multiple 的三种体裁 

deselect_by_value(self, value):

3、Select提供了多样撤废选中项的不二秘技

<select> 标签样式

 以扩散的value属性值来寻觅该option并撤除接受;

1 deselect_all             # 取消全部的已选择项
2 deselect_by_index        # 取消已选中的索引项
3 deselect_by_value        # 取消已选中的value值
4 deselect_by_visible_text # 取消已选中的文本值

图片 1

deselect_by_index(self, index):

注意事项:

 <select> 标签的multiple 属性样式

 以传播的index属性值来搜寻相配的要素并打消接收;

在日常的web测量检验中,会时不时遇上一些下拉框选项已经被暗中同意选中,这种时候就须求用到这里所说的多样办法;

图片 2

deselect_by_visible_text(self, text):

 

由于接收已经介绍的很详细,那么大家同盟的筛选和收回,写三个事例共同演示一下

 以扩散的text文本值来搜寻相称的要素并撤回接纳;

上边以实际的代码来做个示范,被测验网页与源码截图如下:

援助测量检验的页面html代码

图片 3

<html>
<body>
    <select name="cars" multiple="multiple" size="4">
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
        <option value="mercedes">Mercedes</option>
        <option value="audi">Audi</option>
    </select>
</body>
</html>

例如要选择3线,那么三种选取形式身体力行代码如下:

先是大家通过index、value、text文本二种方法开展选取,然后再度按index、value、text 举办撤销,最终遍历全数的option循环选用,最后全体撤回。

 1 # coding=utf-8
 2 from selenium import webdriver
 3 from selenium.webdriver.support.select import Select
 4 from time import sleep
 5 
 6 # 登录
 7 driver = webdriver.Chrome()
 8 ......
 9 
10 # 根据索引选择
11 Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_index("3")
12 # 根据value值选择
13 Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_value("3线")
14 # 根据文本值选择
15 Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_visible_text("3线")
16 sleep(5)
17 driver.quit()
#-*- coding:utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
'''本示例中所有设置等待时间均为便于观察效果'''
time.sleep(1)
Select(driver.find_element_by_name('cars')).select_by_index(0)  #以索引选择
time.sleep(1) 
Select(driver.find_element_by_name('cars')).select_by_value('saab')  #以value属性值选择
time.sleep(1) 
Select(driver.find_element_by_name('cars')).select_by_visible_text('Mercedes') #以text 文本进行选择
time.sleep(2)
Select(driver.find_element_by_name('cars')).deselect_by_index(0)
time.sleep(1)
Select(driver.find_element_by_name('cars')).deselect_by_value('saab')  #以value属性值取消选择
time.sleep(1) 
Select(driver.find_element_by_name('cars')).deselect_by_visible_text('Mercedes') #以text 文本进行取消选择
time.sleep(1)
'''获取所有的option的text值,进行遍历通过text文本进行选择'''
Options = Select(driver.find_element_by_name('cars')).options #该方法下面会详细介绍,此处为了获取所有的options选项
for option in Options:
    Select(driver.find_element_by_name('cars')).select_by_visible_text(option.text)  #循环选择
time.sleep(1)
Select(driver.find_element_by_name('cars')).deselect_all()
time.sleep(1)
driver.quit()

 

代码逻辑不重大,主要的是看效果,如下突显

上述就是有关selenium的Select模块提供的二种方式的用法,示例代码只是示例,具体举办还索要结合实际的做事索要来实行,后续会介绍有关Xpath以致CSS定位等连锁的内容。。。

图片 4 

 

3.选项

固然采撷未有上边两大块那么重大,然而大家还索要轻巧的来看一下

  • options    #以列表形式再次来到归属此select标签的兼具option
  • all_selected_options #全方位取舍了的option的列表
  • first_selected_option #首先个被入选的option成分借使select未有multiple值,那个时候获取值为日前甄选的option

option 方法方面包车型地铁例证已经使用过了,下边我们来介绍一下

def options(self):
    '''以列表形式返回属于此select标签的所有option'''
    return self._el.find_elements(By.TAG_NAME, 'option')

示例:

#-*- coding:utf-8 -*-

from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
S = Select(driver.find_element_by_name('cars')).options  #实例化Select,并且获取所有的options
for option in S:  #遍历options
    print(option.text) #获取option值
driver.quit()

 大家构成着上面的例证把剩余的三种option方法一同演示下,下边在下边的事例进行更改一下,来拜望会并发上边样子的效果与利益

#-*- coding:utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/hunk/Desktop/select.html')
'''本示例中所有设置等待时间均为便于观察效果'''
time.sleep(1)
Select(driver.find_element_by_name('cars')).select_by_index(0)  #以索引选择
time.sleep(1) 
Select(driver.find_element_by_name('cars')).select_by_value('saab')  #以value属性值选择
time.sleep(1) 
Select(driver.find_element_by_name('cars')).select_by_visible_text('Mercedes') #以text 文本进行选择
time.sleep(2)
options = Select(driver.find_element_by_name('cars')).all_selected_options  #获取所有选择的option
'''这里我们遍历下看看那些值被选中'''
for option in options:
    print('已经被选中option文本值:'   option.text)
Select(driver.find_element_by_name('cars')).deselect_by_index(0)
time.sleep(1)
Select(driver.find_element_by_name('cars')).deselect_by_value('saab')  #以value属性值取消选择
time.sleep(1) 
Select(driver.find_element_by_name('cars')).deselect_by_visible_text('Mercedes') #以text 文本进行取消选择
time.sleep(1)
'''获取所有的option的text值,进行遍历通过text文本进行选择'''
Options = Select(driver.find_element_by_name('cars')).options #该方法下面会详细介绍,此处为了获取所有的options选项
for option in Options:
    Select(driver.find_element_by_name('cars')).select_by_visible_text(option.text)  #循环选择
time.sleep(1)
'''因为遍历的过程中Volvo的索引为0,Volvo则被第一个选中'''
selectOption = Select(driver.find_element_by_name('cars')).first_selected_option
print (selectOption.text)
Select(driver.find_element_by_name('cars')).deselect_all()
time.sleep(1)
driver.quit()

咱俩把option增加将来,调整台打字与印刷了生机勃勃晃效用,看看是或不是是获取了对应的值

图片 5

上述把Select模块中常用的办法介绍了,通过二种分歧的下拉菜单,对具有的点子开展了介绍,作者利用水绿标志的主意是大家其实项目中通常会使用的,必要越来越浓烈的去领略。

本文由澳门新萄京发布于www.澳门新萄京赌场,转载请注明出处:操作下拉菜单,利用select模块处理下拉框

上一篇:澳门新萄京金立已做到全栈半场景AI解决方案的营 下一篇:没有了
猜你喜欢
热门排行
精彩图文