Factorize code of virtual keyboard
This commit is contained in:
parent
1994970385
commit
c34ef464ab
2 changed files with 19 additions and 35 deletions
|
|
@ -19,10 +19,8 @@
|
||||||
|
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
|
|
||||||
from logging import error
|
|
||||||
|
|
||||||
from weboob.tools.browser import BasePage, BrowserIncorrectPassword
|
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
|
from weboob.tools.browser2.page import HTMLPage
|
||||||
|
|
||||||
__all__ = ['LoginPage', 'INGVirtKeyboard', 'StopPage']
|
__all__ = ['LoginPage', 'INGVirtKeyboard', 'StopPage']
|
||||||
|
|
@ -43,6 +41,7 @@ class INGVirtKeyboard(VirtKeyboard):
|
||||||
color = 64
|
color = 64
|
||||||
|
|
||||||
def __init__(self, basepage):
|
def __init__(self, basepage):
|
||||||
|
self.basepage = basepage
|
||||||
divkeyboard = basepage.doc.find("//div[@id='clavierdisplayLogin']")
|
divkeyboard = basepage.doc.find("//div[@id='clavierdisplayLogin']")
|
||||||
if divkeyboard is None:
|
if divkeyboard is None:
|
||||||
divkeyboard = basepage.doc.find("//div[@id='claviertransfer']")
|
divkeyboard = basepage.doc.find("//div[@id='claviertransfer']")
|
||||||
|
|
@ -83,6 +82,18 @@ class INGVirtKeyboard(VirtKeyboard):
|
||||||
code += str(y)
|
code += str(y)
|
||||||
return code
|
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):
|
class LoginPage(HTMLPage):
|
||||||
def prelogin(self, login, birthday):
|
def prelogin(self, login, birthday):
|
||||||
|
|
@ -101,26 +112,14 @@ class LoginPage(HTMLPage):
|
||||||
|
|
||||||
def login(self, password):
|
def login(self, password):
|
||||||
# 2) And now, the virtual Keyboard
|
# 2) And now, the virtual Keyboard
|
||||||
try:
|
|
||||||
vk = INGVirtKeyboard(self)
|
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))
|
|
||||||
|
|
||||||
form = self.get_form(name='mrc')
|
form = self.get_form(name='mrc')
|
||||||
form['mrc:mrg'] = 'mrc:mrg'
|
form['mrc:mrg'] = 'mrc:mrg'
|
||||||
form['AJAXREQUEST'] = '_viewRoot'
|
form['AJAXREQUEST'] = '_viewRoot'
|
||||||
form['mrc:mrldisplayLogin'] = vk.get_string_code(realpasswd)
|
form['mrc:mrldisplayLogin'] = vk.get_coordinates('//span[@id="digitpaddisplayLogin"]', password)
|
||||||
form.submit()
|
form.submit()
|
||||||
|
|
||||||
|
|
||||||
class StopPage(BasePage):
|
class StopPage(BasePage):
|
||||||
def on_loaded(self):
|
pass
|
||||||
raise BrowserIncorrectPassword('Please login on website to fill the form and retry')
|
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,10 @@
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.tools.captcha.virtkeyboard import VirtKeyboardError
|
|
||||||
from weboob.capabilities.bank import Recipient, AccountNotFound, Transfer
|
from weboob.capabilities.bank import Recipient, AccountNotFound, Transfer
|
||||||
from weboob.tools.browser2.page import HTMLPage, LoggedPage, ListElement, ItemElement, method
|
from weboob.tools.browser2.page import HTMLPage, LoggedPage, ListElement, ItemElement, method
|
||||||
from weboob.tools.browser2.filters import CleanText, CleanDecimal
|
from weboob.tools.browser2.filters import CleanText, CleanDecimal
|
||||||
from .login import INGVirtKeyboard
|
from .login import INGVirtKeyboard
|
||||||
from logging import error
|
|
||||||
|
|
||||||
__all__ = ['TransferPage']
|
__all__ = ['TransferPage']
|
||||||
|
|
||||||
|
|
@ -128,20 +126,7 @@ class TransferPage(LoggedPage, HTMLPage):
|
||||||
|
|
||||||
class TransferConfirmPage(HTMLPage):
|
class TransferConfirmPage(HTMLPage):
|
||||||
def confirm(self, password):
|
def confirm(self, password):
|
||||||
try:
|
|
||||||
vk = INGVirtKeyboard(self)
|
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)
|
|
||||||
|
|
||||||
form = self.get_form(xpath='//div[@id="transfer_panel"]//form')
|
form = self.get_form(xpath='//div[@id="transfer_panel"]//form')
|
||||||
for elem in form:
|
for elem in form:
|
||||||
|
|
@ -150,7 +135,7 @@ class TransferConfirmPage(HTMLPage):
|
||||||
|
|
||||||
form['AJAXREQUEST'] = '_viewRoot'
|
form['AJAXREQUEST'] = '_viewRoot'
|
||||||
form['%s:mrgtransfer' % form.name] = '%s:mrgtransfer' % form.name
|
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()
|
form.submit()
|
||||||
|
|
||||||
@method
|
@method
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue