From 9f5f362533f0d7e5deb8709966ae191a45d00aa6 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 29 Nov 2016 11:31:03 +0100 Subject: [PATCH] Don't crash if we can't get an element's value for editing Fixes #2150 --- qutebrowser/browser/commands.py | 4 ++++ qutebrowser/browser/webelem.py | 2 +- qutebrowser/browser/webengine/webengineelem.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 97fc8c186..0d977a30f 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -1484,6 +1484,10 @@ class CommandDispatcher: return text = elem.value() + if text is None: + message.error("Could not get text from the focused element.") + return + ed = editor.ExternalEditor(self._tabbed_browser) ed.editing_finished.connect(functools.partial( self.on_editing_finished, elem)) diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 74304040c..0ddd4d265 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -139,7 +139,7 @@ class AbstractWebElement(collections.abc.MutableMapping): raise NotImplementedError def value(self): - """Get the value attribute for this element.""" + """Get the value attribute for this element, or None.""" raise NotImplementedError def set_value(self, value): diff --git a/qutebrowser/browser/webengine/webengineelem.py b/qutebrowser/browser/webengine/webengineelem.py index e045d22ed..bf8d06474 100644 --- a/qutebrowser/browser/webengine/webengineelem.py +++ b/qutebrowser/browser/webengine/webengineelem.py @@ -91,7 +91,7 @@ class WebEngineElement(webelem.AbstractWebElement): return self._js_dict['outer_xml'] def value(self): - return self._js_dict['value'] + return self._js_dict.get('value', None) def set_value(self, value): js_code = javascript.assemble('webelem', 'set_value', self._id, value)