<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://didierdanse.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'French/Fran&amp;#231;ais' and 'Web browsers'</title><link>http://didierdanse.net/search/SearchResults.aspx?o=DateDescending&amp;tag=French%2fFran%26%23231%3bais,Web+browsers&amp;orTags=0</link><description>Search results matching tags 'French/Fran&amp;#231;ais' and 'Web browsers'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Utilisation de Selenium dans un contexte SharePoint</title><link>http://didierdanse.net/blogs/dev/archive/2010/05/29/utilisation-de-selenium-dans-un-contexte-sharepoint.aspx</link><pubDate>Sat, 29 May 2010 19:25:09 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:325</guid><dc:creator>Didier Danse</dc:creator><description>&lt;p&gt;Peu importe la technologie ciblée lors d’un développement, il convient de réaliser un maximum de tests. Malheureusement on est généralement confronté à un problème simple: quel outil choisir pour la réalisation de ces tests. &lt;/p&gt;  &lt;p&gt;Dans un environnement Microsoft, on serait tenter de mettre en avant les outils de tests présents dans Team System. Cependant, parfois il n’est pas nécessaire de mettre un autre produit, gratuit. En l’occurence, ce post a pour but de montrer l’utilisation de Selenium, outil de tests web.&lt;/p&gt;  &lt;p&gt;Selenium se décline en divers modules. Sur cette base, des tests ont été effectués avec :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Selenium IDE (plugin Firefox) &lt;/li&gt;    &lt;li&gt;Selenium RC &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Selenium IDE&lt;/h3&gt;  &lt;p&gt;L’IDE permet d’enregistrement une suite d’actions et de la rejouer rapidement. Pour cela, Selenium ajoute du code lui permettant d’effectuer les dites actions sans intervention humaine.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/clip_image001_55EF1951.gif"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image001" border="0" alt="clip_image001" src="http://didierdanse.net/blogs/dev/clip_image001_thumb_33B70DCB.gif" width="404" height="524" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Durant les tests effectués, il est arrivé que Selenium ne puisse rejouer les tests qu’il a lui-même enregistré, cela a cause des identifiants qui varient d’un chargement à l’autre de la page ou d’autres modifications du genre.&lt;/p&gt;  &lt;p&gt;Les points positifs de Selenium IDE :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open Source ; &lt;/li&gt;    &lt;li&gt;Fonctionnalités globales permettant de couvrir des scénarios simples et systématiques. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Les points négatifs de Selenium IDE :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ne fonctionne que sur Firefox ; &lt;/li&gt;    &lt;li&gt;L’interface manque de convivialité. Certaines actions simples et fréquentes nécessitent des opérations manuelles dans des fichiers ; &lt;/li&gt;    &lt;li&gt;Par défaut, pas d’utilisation possible de boucles ; &lt;/li&gt;    &lt;li&gt;Par défaut, pas d’utilisation possible de conditions ; &lt;/li&gt;    &lt;li&gt;Nécessité de travailler avec des tests à part entière et donc impossibilité de « passer des paramètres » à une activité sans pour autant placer ces conditions ; &lt;/li&gt;    &lt;li&gt;La multiplication des scénarios nécessitent cette même multiplication des tests proprement dits. Toute modification doit se faire sur l’ensemble des tests dupliqués. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Selenium RC&lt;/h3&gt;  &lt;p&gt;Selenium RC (Remote Control) est un serveur qui fait office de Proxy (l’application envoie une requête à Selenium RC et Selenium la transmet au serveur destinataire). Comme pour l’IDE, il ajoute du code javascript lui permettant d’accéder et manipuler la page. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/clip_image003_2BBF6B69.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image003" border="0" alt="clip_image003" src="http://didierdanse.net/blogs/dev/clip_image003_thumb_267084B8.jpg" width="542" height="529" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Les points positifs :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open Source ; &lt;/li&gt;    &lt;li&gt;Multi-navigateurs ; &lt;/li&gt;    &lt;li&gt;Apprentissage rapide (pas de nouvel outil car possibilité d’utilisation du langage de prédilection du développeur) ; &lt;/li&gt;    &lt;li&gt;Possibilité de créer une librairie d’objets réutilisables afin d’éviter les erreurs, d’avoir des opérations communes et aussi d’accélérer la réalisation de tests ; &lt;/li&gt;    &lt;li&gt;Meilleure gestion des informations affichées (il n’est pas nécessaire de faire du nettoyage) ; &lt;/li&gt;    &lt;li&gt;Possibilité d’étendre plus facilement les fonctionnalités de Selenium ; &lt;/li&gt;    &lt;li&gt;Facilité de mise en œuvre de tests qui peuvent utiliser comme source des fichiers, une base de données ou tout autre chose qui est géré par la technologie utilisée. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Les points négatifs :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Nécessité d’installer Java sur la machine qui sert de proxy (il est possible d’utiliser un seul serveur pour différentes personnes). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Pour lancer des tests au travers de Selenium RC, il est nécessaire d’écrire du code chargé de dialoguer avec Selenium RC lui même responsable de charger et d’injecter les informations nécessaires dans les pages.&lt;/p&gt;  &lt;p&gt;Exemple simple de code utilisable dans un contexte SharePoint. Le code parle de lui-même :&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; groupName &lt;span class="kwrd"&gt;in&lt;/span&gt; groupNames)
{
    &lt;span class="preproc"&gt;#region&lt;/span&gt; Add user to group

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!SPTests.ExistsGroup(groupName))
        Assert.Fail(&lt;span class="str"&gt;&amp;quot;Group &amp;#39;&amp;quot;&lt;/span&gt; + groupName + &lt;span class="str"&gt;&amp;quot;&amp;#39; doesn&amp;#39;t exist&amp;quot;&lt;/span&gt;);
            SPTests.AddMemberToGroup(TESTUSER1_USERNAME, groupName);

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (isISAServerUsed) SPTests.DisconnectCurrentUser();

    SPTests.OpenPage(rootRelativeUrl, possibleTitles);
    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;

    &lt;span class="preproc"&gt;#region&lt;/span&gt; Operations
    SPTests.Authentication_ISAServer(TESTUSER1_USERNAME, TESTUSER1_PASSWORD);

    &lt;span class="rem"&gt;// Operations with current user&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (isISAServerUsed) SPTests.DisconnectCurrentUser();
        SPTests.OpenPage(rootRelativeUrl, possibleTitles);
    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;

    &lt;span class="preproc"&gt;#region&lt;/span&gt; Remove user from group
    SPTests.Authentication_ISAServer(ADMINUSERS_USERNAME, ADMINUSERS_PASSWORD);    
    SPTests.RemoveMemberToGroup(TESTUSER1_USERNAME, groupName);

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (isISAServerUsed) SPTests.DisconnectCurrentUser();
        SPTests.OpenPage(rootRelativeUrl, possibleTitles);
    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;
}&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;______&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; RemoveMemberToGroup(&lt;span class="kwrd"&gt;string&lt;/span&gt; memberName, &lt;span class="kwrd"&gt;string&lt;/span&gt; groupName)
{
    OpenGroupPage(groupName);
    selenium.Check(&lt;span class="str"&gt;&amp;quot;//input[@account=&amp;#39;&amp;quot;&lt;/span&gt; + memberName + &lt;span class="str"&gt;&amp;quot;&amp;#39;]&amp;quot;&lt;/span&gt;);

    &lt;span class="kwrd"&gt;try&lt;/span&gt;
    {
        selenium.ChooseOkOnNextConfirmation();
        selenium.RunScript(&lt;span class="str"&gt;&amp;quot;BLOCKED SCRIPTBtnRemoveUsersClick(currentViewId, true);&amp;quot;&lt;/span&gt;);
    }
    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (SeleniumException)
    {
        &lt;span class="rem"&gt;// Handle SeleniumException because of Confirmation not allowed. Deletion is ok&lt;/span&gt;
     }            
}&lt;/pre&gt;

&lt;p&gt;Documentation au sujet de Selenium: &lt;a href="http://seleniumhq.org/docs/index.html"&gt;http://seleniumhq.org/docs/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Selenium ne permet d’effectuer que des tests simples. Pour réaliser des scénarios ou encore des tests de charge, PushToTest TestMaker est l’outil idéalement. Le prix est relativement peu élévé par rapport aux fonctionnalités proposées. Pour plus d’info: &lt;a title="http://www.pushtotest.com/index.php/comparison" href="http://www.pushtotest.com/index.php/comparison"&gt;http://www.pushtotest.com/index.php/comparison&lt;/a&gt;. &lt;/p&gt;</description></item><item><title>SharePoint: Imprimer la page courante</title><link>http://didierdanse.net/blogs/dev/archive/2009/06/15/sharepoint-imprimer-la-page-courante.aspx</link><pubDate>Mon, 15 Jun 2009 19:50:33 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:252</guid><dc:creator>Didier Danse</dc:creator><description>&lt;p&gt;Imprimer une page provenant d’un site Internet est quelque chose de courant et pourtant cette impression est souvent très mal implémentée rendant les impressions peu lisibles ou entourées de toute une série d’éléments non désirés (liens divers, images utilisant abondamment l’encre de l’imprimante et bien d’autres choses pouvant perturber une impression peu couteuse, de qualité et exposant les informations importantes).&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;L’impression peut être lancée de différentes manières:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fonction &lt;em&gt;Impression&lt;/em&gt; dans le menu du navigateur (ou &lt;em&gt;CTRL+P&lt;/em&gt;); &lt;/li&gt;    &lt;li&gt;Fonction incluse dans un script (VBScript ou javascript avec &lt;em&gt;window.print()&lt;/em&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Cette deuxième possibilité ne fait cependant qu’appeler la fonction présentée dans le premier point. De ce fait, l’impression respectera cependant le choix effectué par l’utilisateur, à savoir imprimer ou non les couleurs et images utilisées en background. Par défaut, cette option est décochée sous Internet Explorer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/image_0671EDA1.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://didierdanse.net/blogs/dev/image_thumb_4EFBB6A5.png" width="417" height="535" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cette option a pour but d’éviter le gaspillage d’encre. Il ne reste plus qu’à créer nos propres règles pour définir comment doit être le rendu de notre page à l’impression.&lt;/p&gt;  &lt;p&gt;Jusque là rien d’exception puisque l’on imprime ce qui est à l’écran. Reste donc à voir comment &lt;em&gt;soulager&lt;/em&gt; l’impression des éléments superflus. Nous pourrions utiliser une page générant uniquement un tableau de données. Mais qu’en est-il de l’impression d’un calendrier? D’une liste comportant des groupements? Et pour les filtres? Enfin, comment faire si vous avez filtré dynamiquement les données? Il est difficile de gérer autant de pages qu’il n’y a de cas envisageables et permettant de bénéficier de toutes les fonctionnalités présentées par les composants présents sur la page.&lt;/p&gt;  &lt;p&gt;Il reste cependant une &lt;strong&gt;solution basée sur du CSS tout à fait classique&lt;/strong&gt;. Les règles CSS, les développeurs web connaissent généralement (tout du moins, je l’espère). Ce qu’ils connaissent généralement moins c’est la possibilité de définir des règles pour des &lt;em&gt;médias&lt;/em&gt; différents. Ainsi, on pourra avoir des règles différentes selon le &lt;strong&gt;média&lt;/strong&gt; utilisé: &lt;strong&gt;screen, print, braille et bien d’autres&lt;/strong&gt;. Ceux qui nous intéressent sont clairement &lt;em&gt;screen&lt;/em&gt; et &lt;em&gt;print&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;Ainsi, plusieurs possibilités s’offrent à nous dont les principales sont: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;utiliser 2 link, l’un avec un type screen et l’autre print (et donc deux fichiers css différents). &lt;/li&gt; &lt;/ul&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;stylesheet&amp;#39;&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;printstyle.css&amp;#39;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;text/css&amp;#39;&lt;/span&gt; &lt;span class="attr"&gt;media&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;print&amp;#39;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;stylesheet&amp;#39;&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;screenstyle.css&amp;#39;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;text/css&amp;#39;&lt;/span&gt; &lt;span class="attr"&gt;media&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;#39;screen&amp;#39;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;ul&gt;
  &lt;li&gt;Utiliser un seul fichier CSS et spécifier le média directement dans ce fichier &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="preproc"&gt;@media&lt;/span&gt; screen, print
{
&lt;span class="rem"&gt;/* Règles CSS partagées dans les différents types;&lt;/span&gt;
&lt;span class="rem"&gt;    Notez qu’il aurait été possible d’indiquer all. */&lt;/span&gt;
.master { width: 90%; }
}

&lt;span class="preproc"&gt;@media&lt;/span&gt; print 
{ 
&lt;span class="rem"&gt;/* Règles CSS utilisées uniquement dans le cadre de l’impression */&lt;/span&gt;
.master { width: 100%; }
.monElement { display: none; }
}&lt;/pre&gt;

&lt;p&gt;N’hésitez également pas à utiliser cette possibilité pour remplacer des images par d’autres plus légères pour l’impression, modifier la police de caractères ou tout autre chose permettant une impression de meilleure qualité.&lt;/p&gt;</description></item><item><title>Internet Explorer 8 disponible</title><link>http://didierdanse.net/blogs/dev/archive/2009/03/22/internet-explorer-8-disponible.aspx</link><pubDate>Sun, 22 Mar 2009 19:47:43 GMT</pubDate><guid isPermaLink="false">30b92a27-2adf-4ac9-9a55-506f6f2b3817:221</guid><dc:creator>Didier Danse</dc:creator><description>&lt;p&gt;Internet Explorer 8 est disponible en version finale. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/image_5394FF89.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://didierdanse.net/blogs/dev/image_thumb_2C81F25A.png" width="644" height="379" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;D’apparence, il y a peu de changements mais cette nouvelle version comporte toute une série de nouveautés. Parmi les plus visibles, on peut noter des performances accrues, un support CSS amélioré et bien d’autres choses comme la notion de &lt;em&gt;suggestions&lt;/em&gt;. Retrouvez la liste complète des nouveautés à l’adresse &lt;a title="http://www.microsoft.com/presspass/newsroom/windows/factsheets/IE8FS.mspx" href="http://www.microsoft.com/presspass/newsroom/windows/factsheets/IE8FS.mspx"&gt;http://www.microsoft.com/presspass/newsroom/windows/factsheets/IE8FS.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pour les développeurs, on notera tout de même la présence d’un outil permettant de faire du debugging.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://didierdanse.net/blogs/dev/image_072B32FC.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://didierdanse.net/blogs/dev/image_thumb_2606C83C.png" width="644" height="379" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Téléchargez Internet Explorer à l’adresse: &lt;a title="http://www.microsoft.com/" href="http://www.microsoft.com/ie8"&gt;http://www.microsoft.com/ie8&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>