網站自動化測試程式如何處理 DropDown與Select

網站自動化測試程式如何處理 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]

Leave a Reply

Your email address will not be published. Required fields are marked *