La liste de diffusion est fermée depuis juillet 2022, mais sert toujours d'archive d'informations sur QF-Test.
Cependant, si vous souhaitez rester informé des nouveautés concernant QF-Test, vous pouvez simplement vous abonner à la newsletter :
abonner à la newsletter
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [QF-Test] Extracting/checking text from JEditorPane
Hello Michael, besides the position of the id attribute, the alignment also appears different. But that's not the point, of course. I agree that it would be useful to have two different kinds of text checks for the JEditorPane, one for the HTML and one for the displayed text. I'll see to it to get this implemented before the final release of QF-Test 4.0. Below you can find a script that implements a "Plain text" Checker for a JEditorPane which you can use in the meantime (and also after the QF-Test 4.0 release, of course). As for the check performance problems you reported: Can you please send a .qzp run-log to our support for further analysis? Thank you. Now, here's the promised Checker as Jython SUT script. Just place the SUT script node after the 'Wait for client to connect' node and you'll get the "Plain text" check as the default check when left-clicking and as the first item in the menu when right-clicking in check recording mode. ---------------------------------------------------------------------- from de.qfs.apps.qftest.extensions import ResolverRegistry from de.qfs.apps.qftest.extensions.checks import CheckerRegistry, \ Checker, DefaultCheckType, CheckDataType from de.qfs.apps.qftest.shared.data.check import StringCheckData from de.qfs.lib.util import Pair from java.lang import String import jarray componentClass = "javax.swing.JEditorPane" plainTextCheckType = DefaultCheckType("plaintext", CheckDataType.STRING_LIST, "Plain text") class PlainTextChecker(Checker): def __init__(self): pass def getSupportedCheckTypes(self, com, item): return jarray.array([plainTextCheckType], DefaultCheckType) def getCheckData(self, com, item, checkType): if plainTextCheckType.getIdentifier() == \ checkType.getIdentifier(): doc = com.getDocument() text = doc.getText(1, doc.getLength()).strip() return StringCheckData(checkType.getIdentifier(), text) return None def getCheckDataAndItem(self, com, item, checkType): data = self.getCheckData(com, item, checkType) if data is None: return None return Pair(data, None) def unregister(): try: CheckerRegistry.instance().unregisterChecker( componentClass, plainTextChecker) except: pass def register(): unregister() global plainTextChecker plainTextChecker = PlainTextChecker() CheckerRegistry.instance().registerChecker( componentClass, plainTextChecker) register() ---------------------------------------------------------------------- For further information about Checkers and other classes used in this script, please see the QF-Test manual section 39.3: http://www.qfs.de/qftest/manual/en/tech_checkers.html#sec_checkers Best regards, Greg Michael Theurich <Michael.Theurich@?.int> writes: > I have a problem checking the displayed text in a swing JEditorPane component. The HTML text is > generated by my SUT code in one go, then submitted to the component, and looks like this: > > <html> > <head> > > </head> > <body> > <h2> > Minimum Report Detail <a href="file://entryDetail.html#10,3,0,80"><font size="small">show > help info...</font></a> > </h2> > <table id="detail" rules="cols"> > <tr id="normalrow" currentrow="0"> > <td id="label" border="1" cellspacing="0" align="left"> > > </td> > <td id="value" border="1" cellspacing="0" align="right"> > Raw > </td> > <td id="value" border="1" cellspacing="0" align="right"> > Calibrated > </td> > <td id="value" border="1" cellspacing="0" align="right"> > Unit > </td> > </tr> > and so on... > > This (expected) text has been put into the “expected text” field of a Check-txt node in my test, > by way of the check recording feature of qft (this is exactly how the text looks in a debugger > prior to throwing it at JEditorPane). But when the test runs and the check is executed, it fails, > and the following actual text is displayed: > <html> > <head> > > </head> > <body> > <h2> > Minimum Report Detail <font size="small"><a href="file://entryDetail.html#10,3,0,80">show > help info...</a></font> > </h2> > <table id="detail" rules="cols"> > <tr currentrow="0" id="normalrow"> > <td border="1" cellspacing="0" align="left" id="label"> > > </td> > <td border="1" cellspacing="0" align="right" id="value"> > Raw > </td> > <td border="1" cellspacing="0" align="right" id="value"> > Calibrated > </td> > <td border="1" cellspacing="0" align="right" id="value"> > Unit > </td> > </tr> > > As you can see, the position of the id attribute has changed, although not in all cases. Also the > relative order of the a and the font element have changed. Of course with this text, the test > fails. > But it also sometimes occurs that the text is extracted unaltered. Component identification is > never an issue. > > Strange, isn’t it? I also noticed that qftest becomes VERY slow when a check_txt contains a large > text field with many line breaks. > > Maybe qftest has to employ special logic to retrieve the HTML from the component. The normal > copy-to-clipboard handler e.g. only retrieves the plain text and strips any tags. Have I spotted a > bug? Is this non-deterministic behaviour of JEditorPane (or it’s instrumentation by qftest) or of > qftest? > > Another solution for me would be to retrieve the plain text from the contents of JEditorPane and > base the comparison on that. Is that supported by qftest in any way? > > I am currently using qftest-3.5.6 for evaluation. > > Thanks for any help, > Michael > > --------------------------------------------------------------------------------- > Michael Theurich > Monitoring Application Tools SW Engineer > > Telespazio VEGA Deutschland GmbH > Provision of Engineering Support Services > > EUMETSAT > Eumetsat-Allee 1 > 64295 Darmstadt > Tel +49 6151 807-7530 > email michael.theurich@?.int > > _______________________________________________ > qftest-list mailing list > qftest-list@?.de > http://www.qfs.de/mailman/listinfo/qftest-list -- Gregor Schmid E: gregor.schmid@?.de T: +49 (0)8171 38648-11 F: +49 (0)8171 38648-16 Quality First Software GmbH | www.qfs.de Tulpenstr. 41 | 82538 Geretsried | Germany GF Gregor Schmid, Karlheinz Kellerer HRB München 140833
|