| # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import asus_ap_configurator |
| |
| |
| class AsusQISAPConfigurator(asus_ap_configurator.AsusAPConfigurator): |
| """Derived class for Asus routers with the Quick Internet Setup UI.""" |
| |
| |
| def _set_authentication(self, authentication, wait_for_xpath=None): |
| """Sets the authentication method in the popup. |
| |
| Args: |
| authentication: The authentication method to select. |
| wait_for_path: An item to wait for before returning. |
| """ |
| auth = '//select[@name="wl_auth_mode_x"]' |
| self.select_item_from_popup_by_xpath(authentication, auth, |
| wait_for_xpath, alert_handler=self._invalid_security_handler) |
| |
| |
| def navigate_to_page(self, page_number): |
| self.get_url('%s/Advanced_Wireless_Content.asp' % |
| self.admin_interface_url, page_title='General') |
| |
| |
| def get_number_of_pages(self): |
| return 1 |
| |
| |
| def save_page(self, page_number): |
| self.click_button_by_id('applyButton') |
| ssid = '//input[@name="wl_ssid"]' |
| try: |
| self.wait_for_object_by_xpath(ssid) |
| except selenium.common.exceptions.TimeoutException, e: |
| raise RuntimeError('Unable to find the object by xpath: %s\n ' |
| 'WebDriver exception: %s' % (ssid, str(e))) |
| |
| |
| def get_supported_bands(self): |
| return [{'band': self.band_2ghz, |
| 'channels': ['Auto', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}, |
| {'band': self.band_5ghz, |
| 'channels': ['Auto', 36, 40, 44, 48, 149, 153, 157, 161]}] |
| |
| |
| def get_supported_modes(self): |
| return [{'band': self.band_2ghz, |
| 'modes': [self.mode_n, self.mode_auto]}, |
| {'band': self.band_5ghz, |
| 'modes': [self.mode_n, self.mode_auto]}] |
| |
| |
| def _set_mode(self, mode, band=None): |
| if band: |
| self._set_band(band) |
| xpath = '//select[@name="wl_nmode_x"]' |
| self.select_item_from_popup_by_xpath(mode, xpath, |
| alert_handler=self._invalid_security_handler) |
| |
| |
| def _set_ssid(self, ssid): |
| xpath = '//input[@maxlength="32" and @name="wl_ssid"]' |
| self.set_content_of_text_field_by_xpath(ssid, xpath) |
| |
| |
| def _set_channel(self, channel): |
| position = self._get_channel_popup_position(channel) |
| channel_choices = ['Auto', '01', '02', '03', '04', '05', '06', |
| '07', '08', '09', '10', '11'] |
| xpath = '//select[@name="wl_channel"]' |
| if self.current_band == self.band_5ghz: |
| channel_choices = ['Auto', '36', '40', '44', '48', '149', '153', |
| '157', '161'] |
| self.select_item_from_popup_by_xpath(str(channel_choices[position]), |
| xpath) |
| |
| |
| def _set_band(self, band): |
| xpath = '//select[@name="wl_unit"]' |
| self.select_item_from_popup_by_xpath(band, xpath) |
| |
| |
| def _set_security_disabled(self): |
| self._set_authentication('Open System') |
| |
| |
| def _set_security_wep(self, key_value, authentication): |
| popup = '//select[@name="wl_wep_x"]' |
| text_field = '//input[@name="wl_phrase_x"]' |
| self._set_authentication('Shared Key', wait_for_xpath=popup) |
| self.select_item_from_popup_by_xpath('WEP-64bits', popup, |
| wait_for_xpath=text_field, |
| alert_handler=self._invalid_security_handler) |
| self.set_content_of_text_field_by_xpath(key_value, text_field, |
| abort_check=True) |
| |
| |
| def _set_security_wpa2psk(self, shared_key, update_interval): |
| popup = '//select[@name="wl_crypto"]' |
| key_field = '//input[@name="wl_wpa_psk"]' |
| interval_field = '//input[@name="wl_wpa_gtk_rekey"]' |
| self._set_authentication('WPA-Personal', wait_for_xpath=key_field) |
| self.select_item_from_popup_by_xpath('TKIP', popup) |
| self.set_content_of_text_field_by_xpath(shared_key, key_field) |
| self.set_content_of_text_field_by_xpath(str(update_interval), |
| interval_field) |
| |
| |
| def _set_visibility(self, visible=True): |
| value = 0 if visible else 1 |
| xpath = '//input[@name="wl_closed" and @value="%s"]' % value |
| self.click_button_by_xpath(xpath) |