如何處理下拉式選單的選項

如何處理下拉式選單的選項

這篇文章主要說明如何處理下拉式選單的選項。

下拉式選單

http://demo.magentocommerce.com/

dropdown options

Selenium SELECT

要選取下拉式選單的各個選項,主要要透過 SELECT的這個類別來完成相關的動作。SELECT 類別提供許多屬性與操作可以完成下拉式選單的操作。

http://selenium.googlecode.com/git/docs/api/py/webdriver_support/selenium.webdriver.support.select.html#module-selenium.webdriver.support.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]

Leave a Reply

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