1. 程式人生 > >Python+Selenium筆記(八):操作下拉菜單

Python+Selenium筆記(八):操作下拉菜單

sel 字段 功能 options table 註冊 unit 生日 ted

(一) Select

Select類是selenium的一個特定的類,用來與下拉菜單和列表交互。

下拉菜單和列表是通過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(這段就不註釋了)

Python+Selenium筆記(八):操作下拉菜單