mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Allow using a QWebElement to select forms directly
This commit is contained in:
parent
de92beb1ec
commit
3fef8ee45f
@ -187,8 +187,10 @@ class FormsMixin(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.current_form = None
|
self.current_form = None
|
||||||
|
|
||||||
def find_form(self, css2_selector=None, nr=None):
|
def find_form(self, css2_selector=None, nr=None, qwebelement=None):
|
||||||
mf = self.page.mainFrame()
|
mf = self.page.mainFrame()
|
||||||
|
if qwebelement is not None:
|
||||||
|
return Form(qwebelement)
|
||||||
if css2_selector is not None:
|
if css2_selector is not None:
|
||||||
candidate = mf.findFirstElement(css2_selector)
|
candidate = mf.findFirstElement(css2_selector)
|
||||||
if not candidate.isNull():
|
if not candidate.isNull():
|
||||||
@ -206,7 +208,7 @@ class FormsMixin(object):
|
|||||||
mf = self.page.mainFrame()
|
mf = self.page.mainFrame()
|
||||||
return list(map(Form, mf.findAllElements('form').toList()))
|
return list(map(Form, mf.findAllElements('form').toList()))
|
||||||
|
|
||||||
def select_form(self, css2_selector=None, nr=None):
|
def select_form(self, css2_selector=None, nr=None, qwebelement=None):
|
||||||
'''
|
'''
|
||||||
Select a form for further processing. Specify the form either with
|
Select a form for further processing. Specify the form either with
|
||||||
css2_selector or nr. Raises ValueError if no matching form is found.
|
css2_selector or nr. Raises ValueError if no matching form is found.
|
||||||
@ -216,8 +218,10 @@ class FormsMixin(object):
|
|||||||
|
|
||||||
:param nr: An integer >= 0. Selects the nr'th form in the current page.
|
:param nr: An integer >= 0. Selects the nr'th form in the current page.
|
||||||
|
|
||||||
|
:param qwebelement: A QWebElement, useful is CSS selectors are insufficient
|
||||||
|
|
||||||
'''
|
'''
|
||||||
self.current_form = self.find_form(css2_selector=css2_selector, nr=nr)
|
self.current_form = self.find_form(css2_selector=css2_selector, nr=nr, qwebelement=qwebelement)
|
||||||
if self.current_form is None:
|
if self.current_form is None:
|
||||||
raise ValueError('No such form found')
|
raise ValueError('No such form found')
|
||||||
return self.current_form
|
return self.current_form
|
||||||
|
Loading…
x
Reference in New Issue
Block a user