Handle QWebPage javascript methods.

This commit is contained in:
Florian Bruhin 2015-05-12 17:44:06 +02:00
parent 27a34d5499
commit 2b440bc8db

View File

@ -21,15 +21,45 @@
import os import os
import os.path import os.path
import logging
import pytest import pytest
import jinja2 import jinja2
from PyQt5.QtWebKit import QWebSettings from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtWebKitWidgets import QWebView from PyQt5.QtWebKitWidgets import QWebView, QWebPage
import qutebrowser import qutebrowser
class TestWebPage(QWebPage):
"""QWebPage subclass which overrides some test methods.
Attributes:
_logger: The logger used for alerts.
"""
def __init__(self, parent=None):
super().__init__(parent)
self._logger = logging.getLogger('js-tests')
def javaScriptAlert(self, _frame, msg):
"""Log javascript alerts."""
self._logger.info("js alert: {}".format(msg))
def javaScriptConfirm(self, _frame, msg):
"""Fail tests on js confirm() as that should never happen."""
pytest.fail("js confirm: {}".format(msg))
def javaScriptPrompt(self, _frame, msg, _default):
"""Fail tests on js prompt() as that should never happen."""
pytest.fail("js prompt: {}".format(msg))
def javaScriptConsoleMessage(self, msg, line, source):
"""Fail tests on js console messages as they're used for errors."""
pytest.fail("js console ({}:{}): {}".format(source, line, msg))
class JSTester: class JSTester:
"""Object returned by js_tester which provides test data and a webview. """Object returned by js_tester which provides test data and a webview.
@ -42,6 +72,7 @@ class JSTester:
def __init__(self, webview, qtbot): def __init__(self, webview, qtbot):
self.webview = webview self.webview = webview
self.webview.setPage(TestWebPage(self.webview))
self._qtbot = qtbot self._qtbot = qtbot
loader = jinja2.FileSystemLoader(os.path.dirname(__file__)) loader = jinja2.FileSystemLoader(os.path.dirname(__file__))
self._jinja_env = jinja2.Environment(loader=loader, autoescape=True) self._jinja_env = jinja2.Environment(loader=loader, autoescape=True)