網站自動化測試程式如何處理 DropDown與Select
這篇文章主要說明網站自動化測試程式 selenium如何處理 DropDown 下拉式選單。
下拉式選單通常為單選。Select list 為多選。這裡我們舉一個下拉式選單單選為範例,
說明如何知道下拉式選單選項的數量、選擇其中一個我們希望選項,印出選項的內容等。
最後用 python/Selenium為程式範例說明。
測試情境
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select
我們用這個網站的 Select 說明。
該網頁右手邊的 frame 中有一個下拉式選單,選項分別有
<option value=”volvo”>Volvo</option>
<option value=”saab”>Saab</option>
<option value=”opel”>Opel</option>
<option value=”audi”>Audi</option>
我們希望自動化測試程式可以
1. 測試該 select得知有幾個選項
2. Select by Index ,並且將選到的選項印出
3. Select by text “Audi”,並且將選到的值印出
程式說明
這個程式我們主要用到 Select這個物件,來幫助我們操作 selector 的網頁原件,範例如下:
from selenium.webdriver.support.ui import Select
Selector_Element = Select(driver.find_element_by_xpath(Selector_Xpath))
之後我們就可以針對Selector_Element網頁原件操作
下拉式選單有幾個選項?
len (Selector_Element.options)
選擇第2個 (起始值為 0)
Selector_Element.select_by_index(2)
選擇 Audi的這個選項
Selector_Element.select_by_visible_text(‘Audi’)
程式選到的選項文字為何?
Selector_Element.first_selected_option.text
程式範例
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
__author__ = 'Top1'
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select")
driver.maximize_window()
driver.switch_to_frame("iframeResult")
Selector_Xpath = '/html/body/select'
# The number of options in the selection
Selector_Element = Select(driver.find_element_by_xpath(Selector_Xpath))
print "The number of options in the selection = " + str(len (Selector_Element.options))
assert 4==len(Selector_Element.options)
# Select by index = 2
Selector_Element.select_by_index(2)
print " Select by index (2) = " + Selector_Element.first_selected_option.text
Selector_Element.select_by_visible_text('Audi')
print " Select by visible text Audi = " + Selector_Element.first_selected_option.text
driver.quit()
[/pastacode]