📄 browser_documentation.html.svn-base
字号:
<td><span class="new_code">clickImageById($id, $x, $y)</span></td><td>Clique sur une balise input de type image par son identifiant (id="*")</td></tr> <tr><td><span class="new_code">submitFormById($id)</span></td><td>Transmet le formulaire par son identifiant propre</td></tr> </tbody></table> Au jourd d'aujourd'hui il n'existe aucune m茅thode pour lister les formulaires et les champs disponibles : ce sera probablement ajout茅 dans des versions successives de SimpleTest. </p> <p> A l'int茅rieur d'une page, les fen锚tres individuelles peuvent 锚tre s茅lectionn茅es. Si aucune s茅lection n'est r茅alis茅e alors toutes les fen锚tres sont fusionn茅es ensemble dans une unique et grande page. Le contenu de la page en cours sera une concat茅nation des toutes les fen锚tres dans l'ordre sp茅cifi茅 par les balises "frameset". <table><tbody> <tr><td><span class="new_code">getFrames()</span></td><td>Un d茅chargement de la structure de la fen锚tre courante</td></tr> <tr><td><span class="new_code">getFrameFocus()</span></td><td>L'index ou l'茅tiquette de la fen锚tre en courante</td></tr> <tr><td><span class="new_code">setFrameFocusByIndex($choice)</span></td><td>S茅lectionne la fen锚tre num茅rot茅e 脿 partir de 1</td></tr> <tr><td><span class="new_code">setFrameFocus($name)</span></td><td>S茅lectionne une fen锚tre par son 茅tiquette</td></tr> <tr><td><span class="new_code">clearFrameFocus()</span></td><td>Traite toutes les fen锚tres comme une seule page</td></tr> </tbody></table> Lorsqu'on est focalis茅 sur une fen锚tre unique, le contenu viendra de celle-ci uniquement. Cela comprend les liens 脿 cliquer et les formulaires 脿 transmettre. </p> <p><a class="target" name="deboguer"><h2>O霉 sont les erreurs ?</h2></a></p> <p> Toute cette masse de fonctionnalit茅s est g茅niale lorsqu'on arrive 脿 bien t茅l茅charger les pages, mais ce n'est pas toujours 茅vident. Pour aider 脿 d茅couvrir les erreurs, le navigateur a aussi des m茅thodes pour aider au d茅bogage. <table><tbody> <tr><td><span class="new_code">setConnectionTimeout($timeout)</span></td><td>Ferme la socket avec un d茅lai trop long</td></tr> <tr><td><span class="new_code">getRequest()</span></td><td>L'ent锚te de la requ锚te brute de la page ou de la fen锚tre</td></tr> <tr><td><span class="new_code">getHeaders()</span></td><td>L'ent锚te de r茅ponse de la page ou de la fen锚tre</td></tr> <tr><td><span class="new_code">getTransportError()</span></td><td>N'importe quel erreur au niveau de la socket dans le dernier t茅l茅chargement</td></tr> <tr><td><span class="new_code">getResponseCode()</span></td><td>La r茅ponse HTTP de la page ou de la fen锚tre</td></tr> <tr><td><span class="new_code">getMimeType()</span></td><td>Le type Mime de la page our de la fen锚tre</td></tr> <tr><td><span class="new_code">getAuthentication()</span></td><td>Le type d'authentification dans l'ent锚te d'une provocation 401</td></tr> <tr><td><span class="new_code">getRealm()</span></td><td>Le realm d'authentification dans l'ent锚te d'une provocation 401</td></tr> <tr><td><span class="new_code">setMaximumRedirects($max)</span></td><td>Nombre de redirections avant que la page ne soit charg茅e automatiquement</td></tr> <tr><td><span class="new_code">setMaximumNestedFrames($max)</span></td><td>Protection contre des framesets r茅cursifs</td></tr> <tr><td><span class="new_code">ignoreFrames()</span></td><td>Neutralise le support des fen锚tres</td></tr> <tr><td><span class="new_code">useFrames()</span></td><td>Autorise le support des fen锚tres</td></tr> </tbody></table> Les m茅thodes <span class="new_code">SimpleBrowser::setConnectionTimeout()</span>, <span class="new_code">SimpleBrowser::setMaximumRedirects()</span>, <span class="new_code">SimpleBrowser::setMaximumNestedFrames()</span>, <span class="new_code">SimpleBrowser::ignoreFrames()</span> et <span class="new_code">SimpleBrowser::useFrames()</span> continuent 脿 s'appliquer sur toutes les requ锚tes suivantes. Les autres m茅thodes tiennent compte des fen锚tres. Cela veut dire que si une fen锚tre individuelle ne se charge pas, il suffit de se diriger vers elle avec <span class="new_code">SimpleBrowser::setFrameFocus()</span> : ensuite on utilisera <span class="new_code">SimpleBrowser::getRequest()</span>, etc. pour voir ce qui se passe. </p> <p><a class="target" name="unit"><h2>Tests unitaires complexes avec des navigateurs multiples</h2></a></p> <p> Tout ce qui peut 锚tre fait dans <a href="web_tester_documentation.html">WebTestCase</a> peut maintenant 锚tre fait dans un <a href="unit_tester_documentation.html">UnitTestCase</a>. Ce qui revient 脿 dire que nous pouvons librement m茅langer des tests sur des objets de domaine avec l'interface web...<pre><strong>class TestOfRegistration extends UnitTestCase { function testNewUserAddedToAuthenticator() {</strong> $browser = &new SimpleBrowser(); $browser->get('http://my-site.com/register.php'); $browser->setField('email', 'me@here'); $browser->setField('password', 'Secret'); $browser->clickSubmit('Register'); <strong> $authenticator = &new Authenticator(); $member = &$authenticator->findByEmail('me@here'); $this->assertEqual($member->getPassword(), 'Secret');</strong> }}</pre> Bien que 莽a puisse 锚tre utile par convenance temporaire, je ne suis pas fan de ce genre de test. Ce test s'applique 脿 plusieurs couches de l'application, 莽a implique qu'il est plus que probable qu'il faudra le remanier lorsque le code changera. </p> <p> Un cas plus utile d'utilisation directe du navigateur est le moment o霉 le <span class="new_code">WebTestCase</span> ne peut plus suivre. Un exemple ? Quand deux navigateurs doivent 锚tre utilis茅s en m锚me temps. </p> <p> Par exemple, supposons que nous voulions interdire des usages simultan茅s d'un site avec le m锚me login d'identification. Ce sc茅nario de test le v茅rifie...<pre>class TestOfSecurity extends UnitTestCase { function testNoMultipleLoginsFromSameUser() { $first = &new SimpleBrowser(); $first->get('http://my-site.com/login.php'); $first->setField('name', 'Me'); $first->setField('password', 'Secret'); $first->clickSubmit('Enter'); $this->assertEqual($first->getTitle(), 'Welcome'); $second = &new SimpleBrowser(); $second->get('http://my-site.com/login.php'); $second->setField('name', 'Me'); $second->setField('password', 'Secret'); $second->clickSubmit('Enter'); $this->assertEqual($second->getTitle(), 'Access Denied'); }}</pre> Vous pouvez aussi utiliser la classe <span class="new_code">SimpleBrowser</span> quand vous souhaitez 茅crire des sc茅narios de test en utilisant un autre outil que SimpleTest. </p> </div> References and related information... <ul><li> La page du projet SimpleTest sur <a href="http://sourceforge.net/projects/simpletest/">SourceForge</a>. </li><li> La page de t茅l茅chargement de SimpleTest sur <a href="http://www.lastcraft.com/simple_test.php">LastCraft</a>. </li><li> <a href="http://simpletest.org/api/">L'API de d茅veloppeur pour SimpleTest</a> donne tous les d茅tails sur les classes et les assertions disponibles. </li></ul><div class="menu_back"><div class="menu"><a href="index.html">SimpleTest</a> | <a href="overview.html">Overview</a> | <a href="unit_test_documentation.html">Unit tester</a> | <a href="group_test_documentation.html">Group tests</a> | <a href="mock_objects_documentation.html">Mock objects</a> | <a href="partial_mocks_documentation.html">Partial mocks</a> | <a href="reporter_documentation.html">Reporting</a> | <a href="expectation_documentation.html">Expectations</a> | <a href="web_tester_documentation.html">Web tester</a> | <a href="form_testing_documentation.html">Testing forms</a> | <a href="authentication_documentation.html">Authentication</a> | <a href="browser_documentation.html">Scriptable browser</a></div></div><div class="copyright"> Copyright<br>Marcus Baker 2006 </div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -