From 585136796cdaf4a7f53be9e3cc474e81c9c03664 Mon Sep 17 00:00:00 2001 From: Andrews Medina Date: Sun, 15 Dec 2019 20:28:39 -0300 Subject: [PATCH 1/3] make find_by_value works with btn elements closes #274 --- splinter/driver/lxmldriver.py | 10 ++++++++-- tests/find_elements.py | 5 +++++ tests/static/index.html | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/splinter/driver/lxmldriver.py b/splinter/driver/lxmldriver.py index 886d14572..de8f4afde 100644 --- a/splinter/driver/lxmldriver.py +++ b/splinter/driver/lxmldriver.py @@ -179,9 +179,12 @@ def find_by_tag(self, tag): ) def find_by_value(self, value): - return self.find_by_xpath( + elem = self.find_by_xpath( '//*[@value="%s"]' % value, original_find="value", original_selector=value ) + if elem: + return elem + return self.find_by_xpath('//*[.="%s"]' % value) def find_by_text(self, text): xpath_str = _concat_xpath_from_str(text) @@ -412,7 +415,10 @@ def __getitem__(self, attr): @property def value(self): - return self._control.value + try: + return self._control.value + except AttributeError: + return self._control.text @property def checked(self): diff --git a/tests/find_elements.py b/tests/find_elements.py index cddd0db23..27720faa3 100644 --- a/tests/find_elements.py +++ b/tests/find_elements.py @@ -26,6 +26,11 @@ def test_finding_by_value(self): id = self.browser.find_by_id("gender-m") self.assertEqual(id.value, value) + def test_finding_by_value_in_btn_elements(self): + value = self.browser.find_by_value("some value").value + btn = self.browser.find_by_id("button-value") + self.assertEqual(btn.value, value) + def test_finding_by_text(self): element = self.browser.find_by_text("Complex") self.assertEqual(element.value, "Complex") diff --git a/tests/static/index.html b/tests/static/index.html index d5125b3ed..e8debc761 100644 --- a/tests/static/index.html +++ b/tests/static/index.html @@ -80,6 +80,7 @@

Example Header

Example Last Header

+
From df8a0bc4d2153e721c27547271e7930930ee5d04 Mon Sep 17 00:00:00 2001 From: Andrews Medina Date: Sun, 15 Dec 2019 21:09:26 -0300 Subject: [PATCH 2/3] fix find_by_value for button elements for zope --- splinter/driver/zopetestbrowser.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/splinter/driver/zopetestbrowser.py b/splinter/driver/zopetestbrowser.py index adf9a6960..fd73c9862 100644 --- a/splinter/driver/zopetestbrowser.py +++ b/splinter/driver/zopetestbrowser.py @@ -166,9 +166,12 @@ def find_by_tag(self, tag): ) def find_by_value(self, value): - return self.find_by_xpath( + elem = self.find_by_xpath( '//*[@value="%s"]' % value, original_find="value", original_selector=value ) + if elem: + return elem + return self.find_by_xpath('//*[.="%s"]' % value) def find_by_text(self, text): xpath_str = _concat_xpath_from_str(text) From 8cc53a37c23836a169c21f28337f4ec6da988332 Mon Sep 17 00:00:00 2001 From: Andrews Medina Date: Sun, 15 Dec 2019 23:06:46 -0300 Subject: [PATCH 3/3] fix find_by_value in chrome --- splinter/driver/webdriver/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/splinter/driver/webdriver/__init__.py b/splinter/driver/webdriver/__init__.py index cc6f8529e..8f52138f1 100644 --- a/splinter/driver/webdriver/__init__.py +++ b/splinter/driver/webdriver/__init__.py @@ -572,12 +572,15 @@ def find_by_tag(self, tag, wait_time=None): ) def find_by_value(self, value, wait_time=None): - return self.find_by_xpath( + elem = self.find_by_xpath( '//*[@value="{}"]'.format(value), original_find="value", original_query=value, wait_time=wait_time, ) + if elem: + return elem + return self.find_by_xpath('//*[.="%s"]' % value) def find_by_text(self, text=None, wait_time=None): xpath_str = _concat_xpath_from_str(text)