class WebDriver(object): """The main interface to use for testing, which represents an idealised web browser.""" def __init__(self, profile_name="WebDriver", timeout=30): self.browser = FirefoxLauncher() self.browser.launch_browser(profile_name) self._conn = ExtensionConnection(timeout) self._conn.connect() def execute_script(self, script, *args): """Executes arbitrary javascript. For WebElement argument, the format is: execute_script("argument[0].value='cheese'", elem) """ converted_args = [] for arg in args: if type(arg) == WebElement: converted_args.append({"type": "ELEMENT", "value": arg.id}) else: converted_args.append({"type": "STRING", "value": arg}) resp = self._conn.driver_command("executeScript", script, converted_args) if "NULL" == resp["resultType"]: pass elif "ELEMENT" == resp["resultType"]: return WebElement(self, resp["response"]) else: return resp["response"] def get(self, url): """Loads a web page in the current browser.""" self._command("get", url) def get_current_url(self): """Gets the current url.""" return self._command("getCurrentUrl") def get_title(self): """Gets the title of the current page.""" return self._command("title") def find_element_by_xpath(self, xpath): """Finds an element by xpath.""" try: elem_id = self._command("selectElementUsingXPath", xpath) elem = WebElement(self, elem_id) except ErrorInResponseException, ex: utils.handle_find_element_exception(ex) return elem
def __init__(self, profile=None, timeout=30): """Creates a webdriver instance. Args: profile: a FirefoxProfile object (it can also be a profile name, but the support for that may be removed in future, it is recommended to pass in a FirefoxProfile object) timeout: the amount of time to wait for extension socket """ self.browser = FirefoxLauncher() if type(profile) == str: # This is to be Backward compatible because we used to take a # profile name profile = FirefoxProfile(name=profile) if not profile: profile = FirefoxProfile() self.browser.launch_browser(profile) self._conn = ExtensionConnection(timeout) self._conn.connect()
class WebDriver(object): """The main interface to use for testing, which represents an idealised web browser.""" def __init__(self, profile=None, timeout=30): """Creates a webdriver instance. Args: profile: a FirefoxProfile object (it can also be a profile name, but the support for that may be removed in future, it is recommended to pass in a FirefoxProfile object) timeout: the amount of time to wait for extension socket """ self.browser = FirefoxLauncher() if type(profile) == str: # This is to be Backward compatible because we used to take a # profile name profile = FirefoxProfile(name=profile) if not profile: profile = FirefoxProfile() self.browser.launch_browser(profile) self._conn = ExtensionConnection(timeout) self._conn.connect() def execute_script(self, script, *args): """Executes arbitrary javascript. For WebElement argument, the format is: execute_script("argument[0].value='cheese'", elem) """ converted_args = [] for arg in args: if type(arg) == WebElement: converted_args.append({"type": "ELEMENT", "value": arg.id}) else: converted_args.append({"type": "STRING", "value": arg}) resp = self._conn.driver_command("executeScript", script, converted_args) if "NULL" == resp["resultType"]: pass elif "ELEMENT" == resp["resultType"]: return WebElement(self, resp["response"]) else: return resp["response"] def get(self, url): """Loads a web page in the current browser.""" self._command("get", url) def get_current_url(self): """Gets the current url.""" return self._command("getCurrentUrl") def get_title(self): """Gets the title of the current page.""" return self._command("title") def find_element_by_xpath(self, xpath): """Finds an element by xpath.""" try: elem_id = self._command("selectElementUsingXPath", xpath) elem = WebElement(self, elem_id) except ErrorInResponseException, ex: utils.handle_find_element_exception(ex) return elem
def __init__(self, profile_name="WebDriver", timeout=30): self.browser = FirefoxLauncher() self.browser.launch_browser(profile_name) self._conn = ExtensionConnection(timeout) self._conn.connect()