1# Copyright (c) 2013 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import logging 6import urlparse 7 8import linksyse2100_ap_configurator 9 10 11class LinksysWRT160APConfigurator(linksyse2100_ap_configurator. 12 Linksyse2100APConfigurator): 13 """Derived class to control Linksys WRT160Nv3 router.""" 14 15 def navigate_to_page(self, page_number): 16 if page_number == 1: 17 page_url = urlparse.urljoin(self.admin_interface_url, 18 'Wireless_Basic.asp') 19 self.get_url(page_url, page_title='Settngs') 20 elif page_number == 2: 21 page_url = urlparse.urljoin(self.admin_interface_url, 22 'WL_WPATable.asp') 23 self.get_url(page_url, page_title='Security') 24 else: 25 raise RuntimeError('Invalid page number passed. Number of pages ' 26 '%d, page value sent was %d' % 27 (self.get_number_of_pages(), page_number)) 28 29 30 def _set_channel(self, channel): 31 position = self._get_channel_popup_position(channel) 32 xpath = '//select[@name="wl_schannel"]' 33 channels = ['Auto', '1', '2', '3', '4', '5', '6', '7', '8', 34 '9', '10', '11'] 35 self.select_item_from_popup_by_xpath(channels[position], xpath) 36 37 38 def _set_channel_width(self, channel_wid): 39 channel_width_choice = ['Auto (20 MHz or 40 MHz)', '20MHz only'] 40 xpath = '//select[@name="_wl_nbw"]' 41 self.select_item_from_popup_by_xpath(channel_width_choice[channel_wid], 42 xpath) 43 44 45 def _set_security_wpapsk(self, security, shared_key, update_interval=3600): 46 if update_interval not in range(600, 7201): 47 logging.info('The update interval should be between 600 and 7200.' 48 'Setting the interval to default (3600)') 49 update_interval = 3600 50 super(LinksysWRT160APConfigurator, self)._set_security_wpapsk(security, 51 shared_key, update_interval) 52 text = '//input[@name="wl_wpa_gtk_rekey"]' 53 self.set_content_of_text_field_by_xpath(update_interval, text, 54 abort_check=True) 55