如何處理下拉式選單的選項
這篇文章主要說明如何處理下拉式選單的選項。
下拉式選單
http://demo.magentocommerce.com/
Selenium SELECT
要選取下拉式選單的各個選項,主要要透過 SELECT的這個類別來完成相關的動作。SELECT 類別提供許多屬性與操作可以完成下拉式選單的操作。
程式範例
[pastacode lang=”python” message=”Dropdown Options SELECT” highlight=”” provider=”manual”]
import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from __builtin__ import classmethod
from selenium.webdriver.support.ui import Select
class HomePageTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
# create a new Firefox session """
cls.driver = webdriver.Firefox()
cls.driver.implicitly_wait(30)
cls.driver.maximize_window()
# navigate to the application home page """
cls.driver.get("http://demo.magentocommerce.com/")
def test_language_options(self):
# list of expected values in Language dropdown
exp_options = ["ENGLISH", "FRENCH", "GERMAN"]
# empty list for capturing actual options displayed
# in the dropdown
act_options = []
# get the Your language dropdown as instance of Select class
select_language = Select(self.driver.find_element_by_id("select-language"))
# check number of options in dropdown
self.assertEqual(3, len(select_language.options))
# get options in a list
for option in select_language.options:
act_options.append(option.text)
print option.text
# check expected options list with actual options list
self.assertListEqual(exp_options, act_options)
self.assertEqual("ENGLISH", select_language.first_selected_option.text)
# select an option using select_by_visible text
select_language.select_by_visible_text("German")
# check store is now German
self.assertTrue("store=german" in self.driver.current_url)
# changing language will refresh the page,
# we need to get find language dropdown once again
select_language = Select(self.driver.find_element_by_id("select-language"))
select_language.select_by_index(0)
# check default selected option is English
@classmethod
def tearDownClass(cls):
# close the browser window
cls.driver.quit()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
if __name__ == '__main__':
unittest.main(verbosity=2)
[/pastacode]