永利官网ylg客户端:selenium下拉菜单

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

主要把Select方法总结了一下分为三大类:

select_by_index(self, index):

from selenium.webdriver.support.ui import Select

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

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

 

我们把option添加以后,控制台打印了一下效果,看看是否是获取了对应的值

deselect_by_value(self, value):

(三)  示例(检查12306注册页面的证件类型是否与预期一致)

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

 此函数返回一个属于此select标签的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(这段就不注释了)
#-*- 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()

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

(二) Select类的功能及方法

永利官网ylg客户端 1

 以传入的index属性值来查找匹配的元素并取消选择;

功能/属性

简单说明

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

为了测试以上的方法,从网上找的了一个简单的页面,来辅助测试

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

 

辅助测试的页面html代码

 以传入的text文本值来查找匹配的元素并取消选择;

(一) Select类

<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(driver.find_永利官网ylg客户端,element_by_id(“id_language”)).select_by_value(‘en’)

方法

简单说明

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

使用first_selected_option(self)
来切换到第一个option,该方法与select_ylg娱乐官网,by_index(0)实现的效果相同,直接看一下代码执行效果,详细的就解释了

select_by_visible_text(self, text)

下拉菜单和列表是通过HTML的<select>
元素实现的。选择项是通过<select>中的<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')).first_selected_option
time.sleep(2)   #切换后option显示"Audi"
driver.quit()

当然Select类中包含几个用于定位的option的方法,如下:

 

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

 将所有选择清除;

  • deselect_by_index(self, index)            
     #以index属性值来查找匹配的元素并取消选择;
  • deselect_by_value(self, value)            
     #以value属性值来查找该option并取消选择;
  • deselect_by_visible_text(self, text)
      #以text文本值来查找匹配的元素并取消选择;
  • deselect_all(self)    
                                 
     #将所有选择清除;

all_selected_options(self):

针对按value进行切换option属性示例如下。常用方法

deselect_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')).select_by_visible_text ('Audi')  #实例化Select,text值是选择的我们下拉菜单时看到的值
time.sleep(2)   #切换后option显示"Audi"
driver.quit()

 以传入的index属性值来查找匹配的元素并选择;

发表评论

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