diff --git a/modules/ing/pages/login.py b/modules/ing/pages/login.py index 60d3b3b6..d44598a0 100644 --- a/modules/ing/pages/login.py +++ b/modules/ing/pages/login.py @@ -19,10 +19,8 @@ from StringIO import StringIO -from logging import error - from weboob.tools.browser import BasePage, BrowserIncorrectPassword -from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError +from weboob.tools.captcha.virtkeyboard import VirtKeyboard from weboob.tools.browser2.page import HTMLPage __all__ = ['LoginPage', 'INGVirtKeyboard', 'StopPage'] @@ -43,6 +41,7 @@ class INGVirtKeyboard(VirtKeyboard): color = 64 def __init__(self, basepage): + self.basepage = basepage divkeyboard = basepage.doc.find("//div[@id='clavierdisplayLogin']") if divkeyboard is None: divkeyboard = basepage.doc.find("//div[@id='claviertransfer']") @@ -83,6 +82,18 @@ class INGVirtKeyboard(VirtKeyboard): code += str(y) return code + def get_coordinates(self, xpath, password): + temppasswd = "" + span = self.basepage.doc.find(xpath) + for i, font in enumerate(span.getiterator('font')): + if font.attrib.get('class') == "vide": + temppasswd += password[i] + self.basepage.browser.logger.debug('We are looking for : ' + temppasswd) + coordinates = self.get_string_code(temppasswd) + self.basepage.browser.logger.debug("Coordonates: " + coordinates) + return coordinates + + class LoginPage(HTMLPage): def prelogin(self, login, birthday): @@ -101,26 +112,14 @@ class LoginPage(HTMLPage): def login(self, password): # 2) And now, the virtual Keyboard - try: - vk = INGVirtKeyboard(self) - except VirtKeyboardError as err: - error("Error: %s" % err) - return False - realpasswd = "" - span = self.doc.find('//span[@id="digitpaddisplayLogin"]') - for i, font in enumerate(span.getiterator('font')): - if font.attrib.get('class') == "vide": - realpasswd += password[i] - self.browser.logger.debug('We are looking for : ' + realpasswd) - self.browser.logger.debug("Coordonates: " + vk.get_string_code(realpasswd)) + vk = INGVirtKeyboard(self) form = self.get_form(name='mrc') form['mrc:mrg'] = 'mrc:mrg' form['AJAXREQUEST'] = '_viewRoot' - form['mrc:mrldisplayLogin'] = vk.get_string_code(realpasswd) + form['mrc:mrldisplayLogin'] = vk.get_coordinates('//span[@id="digitpaddisplayLogin"]', password) form.submit() class StopPage(BasePage): - def on_loaded(self): - raise BrowserIncorrectPassword('Please login on website to fill the form and retry') + pass diff --git a/modules/ing/pages/transfer.py b/modules/ing/pages/transfer.py index 47447d94..40485df2 100644 --- a/modules/ing/pages/transfer.py +++ b/modules/ing/pages/transfer.py @@ -17,12 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.captcha.virtkeyboard import VirtKeyboardError from weboob.capabilities.bank import Recipient, AccountNotFound, Transfer from weboob.tools.browser2.page import HTMLPage, LoggedPage, ListElement, ItemElement, method from weboob.tools.browser2.filters import CleanText, CleanDecimal from .login import INGVirtKeyboard -from logging import error __all__ = ['TransferPage'] @@ -128,20 +126,7 @@ class TransferPage(LoggedPage, HTMLPage): class TransferConfirmPage(HTMLPage): def confirm(self, password): - try: - vk = INGVirtKeyboard(self) - except VirtKeyboardError as err: - error("Error: %s" % err) - return - - realpasswd = "" - span = self.doc.find('//span[@id="digitpadtransfer"]') - for i, font in enumerate(span.getiterator('font')): - if font.attrib.get('class') == "vide": - realpasswd += password[i] - self.browser.logger.debug('We are looking for : ' + realpasswd) - coordinates = vk.get_string_code(realpasswd) - self.browser.logger.debug("Coordonates: " + coordinates) + vk = INGVirtKeyboard(self) form = self.get_form(xpath='//div[@id="transfer_panel"]//form') for elem in form: @@ -150,7 +135,7 @@ class TransferConfirmPage(HTMLPage): form['AJAXREQUEST'] = '_viewRoot' form['%s:mrgtransfer' % form.name] = '%s:mrgtransfer' % form.name - form['%s:mrltransfer' % form.name] = coordinates + form['%s:mrltransfer' % form.name] = vk.get_coordinates('//span[@id="digitpadtransfer"]', password) form.submit() @method