def open(self, address, method='get', headers={}, auth=None): """Opens a web page. :param address: The resource URL. :param method: The Http method. :param headers: An optional dict of extra request hearders. :param auth: An optional tupple of HTTP auth (username, password). :return: Page resource, All loaded resources. """ body = QByteArray() try: method = getattr(QNetworkAccessManager, "%sOperation" % method.capitalize()) except AttributeError: raise Exception("Invalid http method %s" % method) request = QNetworkRequest(QUrl(address)) request.CacheLoadControl(0) if not "User-Agent" in headers: headers["User-Agent"] = self.user_agent for header in headers: request.setRawHeader(header, headers[header]) self._auth = auth self._auth_attempt = 0 # Avoids reccursion self.main_frame.load(request, method, body) self.loaded = False return self.wait_for_page_loaded()
def open(self, address, method='get', headers={}, auth=None, wait_onload_event=True, wait_for_loading=True): """Opens a web page. :param address: The resource URL. :param method: The Http method. :param headers: An optional dict of extra request hearders. :param auth: An optional tupple of HTTP auth (username, password). :param wait_onload_event: If it's set to True waits until the OnLoad event from the main page is fired. Otherwise wait until the Dom is ready. :param wait_for_loading: If True waits until the page is Loaded. Note that wait_onload_event isn't valid if wait_for_loading is False. :return: Page resource, All loaded resources. """ if not wait_onload_event: if self.ghostInit.receivers(SIGNAL("dom_is_ready(bool)")) == 0: self.ghostInit.dom_is_ready.connect(self._page_loaded) Logger.log("Waiting until OnReady event is fired") else: if self.ghostInit.receivers(SIGNAL("dom_is_ready(bool)")) > 0: self.ghostInit.dom_is_ready.disconnect(self._page_loaded) #Logger.log("Waiting until OnLoad event is fired") body = QByteArray() try: method = getattr(QNetworkAccessManager, "%sOperation" % method.capitalize()) except AttributeError: raise Exception("Invalid http method %s" % method) request = QNetworkRequest(QUrl(address)) request.CacheLoadControl(QNetworkRequest.AlwaysNetwork) for header in headers: request.setRawHeader(header, headers[header]) if auth is not None: self.network_manager.setAuthCredentials(auth[0], auth[1]) self._reset_for_loading() self.main_frame.load(request, method, body) if not wait_for_loading: return self.get_loaded_page() return self.wait_for_page_loaded()
def open(self, address, method='get', headers=None, auth=None, body=None, default_popup_response=None): """Opens a web page. @param address: The resource URL. @param method: The Http method. @param headers: An optional dict of extra request hearders. @param auth: An optional tupple of HTTP auth (username, password). @param body: An optional string containing a payload. @param default_popup_response: the default response for any confirm/ alert/prompt popup from the Javascript (replaces the need for the with blocks) """ headers = headers or {} body = body or QByteArray() try: method = getattr(QNetworkAccessManager, "%sOperation" % method.capitalize()) except AttributeError: raise Exception("Invalid http method %s" % method) request = QNetworkRequest(QUrl(address)) request.CacheLoadControl = 0 for header in headers: request.setRawHeader(header, headers[header]) self._auth = auth self._auth_attempt = 0 # Avoids reccursion self.page.mainFrame().load(request, method, body) self._loaded = False if default_popup_response is not None: self._prompt_expected = (default_popup_response, None) self._confirm_expected = (default_popup_response, None) return self.wait_for_page_loaded()