【美高梅开户网址】selenium下拉菜单,操作下拉菜单

(一) Select类

Python+Selenium笔记(八):操作下拉菜单,pythonselenium

(一) Select类

Select类是selenium的3个一定的类,用来与下拉菜单和列表交互。

下拉菜单和列表是透过HTML的<select>
成分达成的。采用项是因而<select>中的<option>成分达成的。使用前使用上面的言辞导入模块。

from selenium.webdriver.support.ui import Select

(二) Select类的法力及办法

功能/属性

简单说明

all_selected_options
获取下拉菜单和列表中被选中的所有选项内容
first_selected_option
获取下拉菜单和列表的第一个选项
options
获取下拉菜单和列表的所有选项

 

方法

简单说明

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)
选择和给定参数匹配的下拉菜单和列表的选择项

 

(三)  示例(检查12306注册页面的注明类型是还是不是与预期一致)

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(这段就不注释了)

 

【美高梅开户网址】selenium下拉菜单,操作下拉菜单。
(一) Select 类
Select类是selenium的3个特定的类,用来与下拉菜单和列表交互。
下拉菜…

测试进程中通常境遇下来菜单,比如说分页,每页展现的条数,以及语言的切换,很多时候时不时是以下来菜单的样式突显,上面大家看一下selenium如何处理下来菜单。

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

Select类是selenium的2个一定的类,用来与下拉菜单和列表交互。

先是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)

from selenium.webdriver.support.ui import Select

根本把Select方法总计了弹指间分成三大类:

Select(driver.find_element_by_id(“id_language”)).select_by_value(‘en’)

(二) Select类的坚守及措施

1.选取列表

用Select来稳定到select标签,而后再通过value来定位,

功能/属性

简单说明

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)               #选拔第3个option 选项

当然Select类中包罗多少个用于固定的option的不二法门,如下:

 

为了测试以上的法子,从网上找的了一个简易的页面,来增派测试

options(self):

方法

简单说明

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):

(三)  示例(检查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()

 此函数再次来到叁个方方面面选拔了的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):

 

#-*- 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):

#-*- 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属性值来开展匹配,并采取;

使用first_selected_option(self)
来切换成第一个option,该办法与select_by_index(0)达成的效应一样,直接看一下代码执行效果,详细的就表达了

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)

率先类我们讲解了怎么抉择列表,总共介绍了4种艺术,但是既然能够挑选我们就足以排除选用,而前三种裁撤方法能够与选拔一一对应,下面大家看下怎么样解除采用

 选取具有有文件展现的option成分,如<option
value=”foo”>Bar</option>;

  • 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):

因为依据上边的页面示例,大家切换实现之后是尚未章程清除,上面大家来推广一下html
<select> 标签的multiple 属性,multiple
属性规定可同时采纳四个选取,能够把 multiple 属性与 size
属性同盟使用,来定义可知选项的数目,所以大家会涉嫌到撤消格局。

 将有着采用清除;

下边是不分包multiple 和 包括 multiple 的二种体裁 

deselect_by_value(self, value):

<select> 标签样式

 以传播的value属性值来搜寻该option并收回选用;

美高梅开户网址 1

deselect_by_index(self, index):

 <select> 标签的multiple 属性样式

 以扩散的index属性值来查找匹配的要素并撤回选用;

美高梅开户网址 2

deselect_by_visible_text(self, text):

鉴于选拔已经介绍的很详细,那么我们相配的选料和注销,写二个事例共同演示一下

 以扩散的text文本值来寻觅匹配的因素并裁撤选择;

支援测试的页面html代码

<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>

先是大家因此index、value、text文本三种方法实行精选,然后再次按index、value、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(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()

代码逻辑不首要,主要的是看成效,如下展现

美高梅开户网址 3 

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添加现在,控制台打字与印刷了一晃作用,看看是还是不是是获取了对应的值

美高梅开户网址 4

上述把Select模块中常用的章程介绍了,通过二种不一样的下拉菜单,对拥有的措施实行了介绍,小编使用海军蓝标志的艺术是大家其实项目中平常会选拔的,须求更进一步深入的去领悟。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图