diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 72dc695dd..8095f1bd8 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -119,6 +119,7 @@ Fixed - Fixed crash when closing the tab an external editor was opened in. - When using `:search-next` before a search is finished, no warning about no results being found is shown anymore. +- Fix :click-element with an ID containing non-alphanumeric characters. Deprecated ~~~~~~~~~~ diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py index 43bec3456..f16beb7fe 100644 --- a/qutebrowser/browser/webkit/webkittab.py +++ b/qutebrowser/browser/webkit/webkittab.py @@ -19,6 +19,7 @@ """Wrapper over our (QtWebKit) WebView.""" +import re import functools import xml.etree.ElementTree @@ -545,6 +546,10 @@ class WebKitElements(browsertab.AbstractElements): callback(None) else: callback(elems[0]) + + # Escape non-alphanumeric characters in the selector + # https://www.w3.org/TR/CSS2/syndata.html#value-def-identifier + elem_id = re.sub(r'[^a-zA-Z0-9_-]', r'\\\g<0>', elem_id) self.find_css('#' + elem_id, find_id_cb) def find_focused(self, callback): diff --git a/tests/end2end/data/click_element.html b/tests/end2end/data/click_element.html index 55bf8b88c..acf0cf77c 100644 --- a/tests/end2end/data/click_element.html +++ b/tests/end2end/data/click_element.html @@ -9,5 +9,6 @@ Duplicate
link + ID with dot