{"id":2545,"date":"2013-01-09T09:47:28","date_gmt":"2013-01-09T14:17:28","guid":{"rendered":"https:\/\/skatox.com\/blog\/?p=2545"},"modified":"2024-12-02T16:07:23","modified_gmt":"2024-12-02T21:07:23","slug":"automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans","status":"publish","type":"post","link":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/","title":{"rendered":"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans"},"content":{"rendered":"\n<p>El t\u00edtulo de esta entrada es un poco largo, pero intentar\u00e9 de explicarles de una manera sencilla como podemos hacer pruebas funcionales en nuestras aplicaciones hechas con el framework de PHP <a title=\"Yii Framework\" href=\"https:\/\/yiiframework.com\/\" target=\"_blank\" rel=\"noopener\">Yii<\/a>, usando <a title=\"Web Browser Automation\" href=\"https:\/\/www.selenium.dev\/\" target=\"_blank\" rel=\"noopener\">Selenium<\/a> y <a title=\"P\u00e1gina de Netbeans\" href=\"https:\/\/netbeans.org\/\" target=\"_blank\" rel=\"noopener\">Netbeans<\/a>. Para quienes no conocen las pruebas funcionales, son aquellas para comprobar la correcta ejecuci\u00f3n de cada una de las funcionalidades del sistema, muchas veces hacemos este proceso manualmente: entrando al sitio, escribiendo a mano (o usando un plugin del navegador) cada campo, haciendo clic en los botones y as\u00ed sucesivamente. Pero cuando el sistema se hace muy grande o estamos en agregando funcionalidades, se puede perder <strong>mucho tiempo <\/strong>en realizar este proceso, si se deja para el final (como en las metodolog\u00edas antiguas) puede ser muy tarde y si se omite tendremos un software con potenciales fallas.<br \/>La idea es automatizar este proceso, para que con un solo clic se ejecuten muchas pruebas y asegurarnos el correcto funcionamiento del programa a lo largo del desarrollo y mantenimiento del mismo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&nbsp;<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n en Netbeans<\/h2>\n\n\n\n<p>Para esta gu\u00eda deben tener ya instalado y configurado los siguientes programas: Netbeans, PHP Unit, un programa hecho con Yii framework, Selenium Server, Firefox (Debe ser igual para otro navegador pero no lo prob\u00e9), Linux (No s\u00e9 si este proceso es igual para Windows).<\/p>\n\n\n\n<p>Primero lo que vamos a hacer es instalar un plugin de Netbeans para manipular el servidor de Selenium desde el IDE, este paso es opcional pero me parece mas f\u00e1cil iniciarlo \/ detenerlo con un clic que a trav\u00e9s de comandos. Para ello vamos a:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Entrar en Netbeans.<\/li>\n\n\n\n<li>Luego en el men\u00fa \u00ab<em>Tools -&gt; Plugins -&gt; Available Plugins<\/em>\u00ab.<\/li>\n\n\n\n<li>All\u00ed buscamos el que tenga el nombre de <em>\u00abSelenium Module for PHP\u00bb <\/em>le damos clic en <em>Install<\/em>.<\/li>\n\n\n\n<li>Una vez finalizada la instalaci\u00f3n, en la pesta\u00f1a de <em>Servicios<\/em> en la parte de <em>Servidores<\/em> tendremos el de Selenium.<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a  href=\"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png\" data-rel=\"lightbox-gallery-0\" data-rl_title=\"Servidor Selenium\" data-rl_caption=\"\" title=\"Servidor Selenium\"><img decoding=\"async\" width=\"266\" height=\"123\" sizes=\"(max-width: 266px) 100vw, 266px\" src=\"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png\" alt=\"Servidor Selenium\" class=\"wp-image-2547\"\/><\/a><figcaption class=\"wp-element-caption\">Servidor Selenium<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Antes de iniciar las pruebas, debemos arrancar el servidor de Selenium con clic derecho y luego en <em>\u00abStart\u00bb. <\/em>Luego procedemos a configurar el proyecto actual (el realizado en Yii) para indicar a Netbeans donde se encuentran las pruebas y PHP Unit:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Hacemos <strong>click derecho <\/strong>en el proyecto y luego en <em>\u00abProperties\u00bb.<\/em><\/li>\n\n\n\n<li>En la secci\u00f3n \u00abSources\u00bb existe una caja llamada \u00ab<em>Test Folder\u00bb, <\/em>en ella vamos a colocar la<strong> ruta absoluta<\/strong> a la carpeta <strong>\/protected\/tests <\/strong>del proyecto (en caso de no funcionar, entonces a <strong>\/protected\/tests\/unit<\/strong>).<\/li>\n\n\n\n<li>Luego en la misma ventana, cambiamos la secci\u00f3n <em>\u00abPHPUnit\u00bb<\/em> y activamos donde dice <em>\u00abUse Bootstrap\u00bb<\/em> donde rellenamos la caja de texto a la ruta absoluta de <strong>\/protected\/tests\/bootstrap.php<\/strong><\/li>\n\n\n\n<li>Luego activamos la opci\u00f3n <em>\u00abUse XML Configuration\u00bb <\/em>y rellenamos en la caja la ruta absoluta de <strong>\/protected\/tests\/phpunit.xml.<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Con esto ya esta configurado Netbeans, sin embargo, en mi caso no funcion\u00f3 de una vez hasta hacer unos peque\u00f1os ajustes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>En mi caso no quer\u00eda detectar al navegador Firefox, para hacerlo funcionar en el archivo de configuraci\u00f3n (phpunit.xml) tuve que eliminar todo el contenido dentro de las etiquetas <strong>&lt;selenium&gt;&lt;\/selenium&gt;<\/strong> dej\u00e1ndolas como las acabo de escribir.<\/li>\n\n\n\n<li>En el archivo <em>WebTestCase.php<\/em>,en la funci\u00f3n <strong>setUp() <\/strong>necesit\u00e9 colocar<strong> $this-&gt;setBrowser(&#8216;*firefox&#8217;);<\/strong> para indicar el navegador por defecto.<\/li>\n\n\n\n<li>Como estaba usando <a title=\"Repositorio de Bootstrap\" href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener\">Bootstrap<\/a> para el frontend, Selenium debe esperar un poco hasta que algunos eventos de Javascript terminen de mejorar la apariencia visual, para ello en el archivo <em>\/protected\/config\/main.php <\/em>se agrega enla secci\u00f3n de preload lo siguiente (asumiendo la carga de <strong>log <\/strong>como se encuentra por defecto):<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">'preload' => array('log',\n  php_sapi_name() !== 'cli' ? 'bootstrap' : '',\n),<\/code><\/pre>\n\n\n\n<p>Listo, ya con presionar<strong> Alt + F6<\/strong> empezar\u00e1 a ejecutar todas las pruebas, si solo quieren para la clase actual deben presionar <strong>Shift + F6.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">Consejos para las pruebas<\/h2>\n\n\n\n<p>A continuaci\u00f3n les doy unos consejos y extractos de c\u00f3digo, pues al principio me cost\u00f3 encontrar como realizar las siguientes tareas en Selenium.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Iniciar sesi\u00f3n en cada prueba<\/h3>\n\n\n\n<p>Para ello deben crear en <em>WebTestCase.php<\/em> (la clase principal para las pruebas) un m\u00e9todo para el login que comience con <strong>_<\/strong> (piso), pues \u00e9stos no se ejecutar\u00e1n en las pruebas, aqu\u00ed mi les dejo c\u00f3digo y luego en cada prueba hacen un <strong>$this->_login() <\/strong>donde requieran identificarse<strong>.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">protected function _login() {\n\t$this->windowMaximize();\n\t$this->open(\"site\/login\");\n\t$this->type(\"LoginForm_username\", \"skatox\"); \/\/Donde LoginForm_username es el id del usuario\n\t$this->type(\"LoginForm_password\", \"contrasena\");\n\t$this->click(\"LoginForm_rememberMe\"); \/\/Permite recordar y no estar autenticando cada rato\n\t$this->click(\"name=yt0\");\n\t$this->waitForPageToLoad(self::PAGE_LOAD_WAIT_TIME); \/\/constante que declar\u00e9 para esperar un tiempo\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Interactuar con la ventana de confirmaci\u00f3n al eliminar un elemento del grid<\/h3>\n\n\n\n<p>En este caso se me complic\u00f3 porque se debe interactuar con una ventana de javascript, el siguiente c\u00f3digo tambi\u00e9n est\u00e1 en <em>WebTestCase.php<\/em> porque lo utilizo a lo largo de todas las pruebas, los par\u00e1metros son: $confirmMsg que es el mensaje de confirmaci\u00f3n que aparece en la ventana y $nonFoundMsg, mensaje de cuando se ha borrado el elemento.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">protected function _testDelete($confirmMsg, $nonFoundMsg){\n  sleep(self::WAIT_JS_TIME); \/\/tiempo para esperar la ventana de javascript\n  $this->chooseCancelOnNextConfirmation(); \/\/Selecciona el boton cancelar para probar este paso\n  $this->click($this->firstDeleteXpath); \/\/Hace clic en el boton de eliminar del grid (Xpath)\n  $this->assertConfirmationPresent($confirmMsg); \/\/Se asegura que esta bien el mensaje\n  $this->getConfirmation();\n  sleep(self::WAIT_JS_TIME);\n  $this->chooseOkOnNextConfirmation(); \/\/Escoge aceptar\n  $this->click($this->firstDeleteXpath);\n  $this->assertConfirmationPresent($confirmMsg);\n  $this->getConfirmation();\n  $this->waitForTextPresent($nonFoundMsg); \/\/Espera que no hayan resultados porque los borr\u00f3\n}<\/code><\/pre>\n\n\n\n<p>Ya con estos pasos pueden empezar a realizar las pruebas funcionales de forma autom\u00e1tica, si quieren conocer como se v\u00e9, les dejo un v\u00eddeo de unas pruebas de un m\u00f3dulo de una aplicaci\u00f3n que estoy realizando:<\/p>\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"lyte-wrapper\" title=\"Pruebas funcionales de Yii usando Netbeans\" style=\"width:640px;max-width:100%;margin:5px auto;\"><div class=\"lyMe\" id=\"WYL_yhjxyip6BkM\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\"><div><meta itemprop=\"thumbnailUrl\" content=\"https:\/\/skatox.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fyhjxyip6BkM%2Fhqdefault.jpg\" \/><meta itemprop=\"embedURL\" content=\"https:\/\/www.youtube.com\/embed\/yhjxyip6BkM\" \/><meta itemprop=\"duration\" content=\"PT2M44S\" \/><meta itemprop=\"uploadDate\" content=\"2013-01-09T14:09:48Z\" \/><\/div><div id=\"lyte_yhjxyip6BkM\" data-src=\"https:\/\/skatox.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fyhjxyip6BkM%2Fhqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\" itemprop=\"name\">Pruebas funcionales de Yii usando Netbeans<\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/yhjxyip6BkM\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/skatox.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fyhjxyip6BkM%2F0.jpg\" alt=\"Pruebas funcionales de Yii usando Netbeans\" width=\"640\" height=\"340\" \/><br \/>Ver este v\u00eddeo en YouTube<\/a><\/noscript><meta itemprop=\"description\" content=\"Video donde muestro como se ejecutan las pruebas funcionales de forma automatizada utilizando Yii en Netbeans. Puedes ver la gu\u00eda de como configurarlo en mi blog: http:\/\/skatox.com\/blog\/?p=2545\"><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:640px;margin:5px auto;\"><\/div><figcaption><\/figcaption><\/figure>","protected":false},"excerpt":{"rendered":"<p>El t\u00edtulo de esta entrada es un poco largo, pero intentar\u00e9 de explicarles de una manera sencilla como podemos hacer pruebas funcionales en nuestras aplicaciones&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/\">Seguir leyendo<span class=\"screen-reader-text\">Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans<\/span><\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[549,716,710,582],"tags":[856,857,855,27,854],"class_list":["post-2545","post","type-post","status-publish","format-standard","hentry","category-desarrollo-web","category-todo-lo-relacionado-al-desarrollo-de-software","category-netbeans-2","category-planetas-linux","tag-pruebas-funcionales","tag-qa","tag-tdd","tag-test","tag-yii","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans - El blog de Skatox<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans - El blog de Skatox\" \/>\n<meta property=\"og:description\" content=\"El t\u00edtulo de esta entrada es un poco largo, pero intentar\u00e9 de explicarles de una manera sencilla como podemos hacer pruebas funcionales en nuestras aplicaciones&#8230;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/\" \/>\n<meta property=\"og:site_name\" content=\"El blog de Skatox\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ElWeblogdeSkatox\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-09T14:17:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-02T21:07:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png\" \/>\n\t<meta property=\"og:image:width\" content=\"266\" \/>\n\t<meta property=\"og:image:height\" content=\"123\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Miguel Useche\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@skatox\" \/>\n<meta name=\"twitter:site\" content=\"@skatox\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Miguel Useche\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/\"},\"author\":{\"name\":\"Miguel Useche\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e081bf33c5b0f1b0514e253cb578e1ba\"},\"headline\":\"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans\",\"datePublished\":\"2013-01-09T14:17:28+00:00\",\"dateModified\":\"2024-12-02T21:07:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/\"},\"wordCount\":840,\"commentCount\":15,\"publisher\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2013\\\/01\\\/selenium-server.png\",\"keywords\":[\"pruebas funcionales\",\"qa\",\"tdd\",\"test\",\"yii\"],\"articleSection\":[\"Desarrollo web\",\"Desarrollo y Programaci\u00f3n\",\"Netbeans\",\"Planetas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/\",\"name\":\"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans - El blog de Skatox\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2013\\\/01\\\/selenium-server.png\",\"datePublished\":\"2013-01-09T14:17:28+00:00\",\"dateModified\":\"2024-12-02T21:07:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#primaryimage\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2013\\\/01\\\/selenium-server.png\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2013\\\/01\\\/selenium-server.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/2013\\\/01\\\/09\\\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\",\"name\":\"El blog de Skatox\",\"description\":\"Compartiendo mis opiniones inform\u00e1ticas mas all\u00e1 de los 280 caracteres\",\"publisher\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/skatox.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#organization\",\"name\":\"El blog de Skatox\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2022\\\/03\\\/tux.png\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/images\\\/2022\\\/03\\\/tux.png\",\"width\":218,\"height\":218,\"caption\":\"El blog de Skatox\"},\"image\":{\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ElWeblogdeSkatox\\\/\",\"https:\\\/\\\/x.com\\\/skatox\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/skatox\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/MiguelAngelUsecheCastro\",\"https:\\\/\\\/x.com\\\/skatox\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e081bf33c5b0f1b0514e253cb578e1ba\",\"name\":\"Miguel Useche\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822\",\"url\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822\",\"contentUrl\":\"https:\\\/\\\/skatox.com\\\/blog\\\/wp-content\\\/litespeed\\\/avatar\\\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822\",\"caption\":\"Miguel Useche\"},\"sameAs\":[\"https:\\\/\\\/skatox.com\",\"https:\\\/\\\/x.com\\\/skatox\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans - El blog de Skatox","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/","og_locale":"es_ES","og_type":"article","og_title":"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans - El blog de Skatox","og_description":"El t\u00edtulo de esta entrada es un poco largo, pero intentar\u00e9 de explicarles de una manera sencilla como podemos hacer pruebas funcionales en nuestras aplicaciones&#8230;","og_url":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/","og_site_name":"El blog de Skatox","article_publisher":"https:\/\/www.facebook.com\/ElWeblogdeSkatox\/","article_published_time":"2013-01-09T14:17:28+00:00","article_modified_time":"2024-12-02T21:07:23+00:00","og_image":[{"width":266,"height":123,"url":"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png","type":"image\/png"}],"author":"Miguel Useche","twitter_card":"summary_large_image","twitter_creator":"@skatox","twitter_site":"@skatox","twitter_misc":{"Escrito por":"Miguel Useche","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#article","isPartOf":{"@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/"},"author":{"name":"Miguel Useche","@id":"https:\/\/skatox.com\/blog\/#\/schema\/person\/e081bf33c5b0f1b0514e253cb578e1ba"},"headline":"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans","datePublished":"2013-01-09T14:17:28+00:00","dateModified":"2024-12-02T21:07:23+00:00","mainEntityOfPage":{"@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/"},"wordCount":840,"commentCount":15,"publisher":{"@id":"https:\/\/skatox.com\/blog\/#organization"},"image":{"@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#primaryimage"},"thumbnailUrl":"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png","keywords":["pruebas funcionales","qa","tdd","test","yii"],"articleSection":["Desarrollo web","Desarrollo y Programaci\u00f3n","Netbeans","Planetas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/","url":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/","name":"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans - El blog de Skatox","isPartOf":{"@id":"https:\/\/skatox.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#primaryimage"},"image":{"@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#primaryimage"},"thumbnailUrl":"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png","datePublished":"2013-01-09T14:17:28+00:00","dateModified":"2024-12-02T21:07:23+00:00","breadcrumb":{"@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#primaryimage","url":"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png","contentUrl":"https:\/\/skatox.com\/blog\/images\/2013\/01\/selenium-server.png"},{"@type":"BreadcrumbList","@id":"https:\/\/skatox.com\/blog\/2013\/01\/09\/automatizacion-de-pruebas-funcionales-con-selenium-en-yii-usando-netbeans\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/skatox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Automatizaci\u00f3n de pruebas funcionales con Selenium en Yii usando Netbeans"}]},{"@type":"WebSite","@id":"https:\/\/skatox.com\/blog\/#website","url":"https:\/\/skatox.com\/blog\/","name":"El blog de Skatox","description":"Compartiendo mis opiniones inform\u00e1ticas mas all\u00e1 de los 280 caracteres","publisher":{"@id":"https:\/\/skatox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/skatox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/skatox.com\/blog\/#organization","name":"El blog de Skatox","url":"https:\/\/skatox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/skatox.com\/blog\/images\/2022\/03\/tux.png","contentUrl":"https:\/\/skatox.com\/blog\/images\/2022\/03\/tux.png","width":218,"height":218,"caption":"El blog de Skatox"},"image":{"@id":"https:\/\/skatox.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ElWeblogdeSkatox\/","https:\/\/x.com\/skatox","https:\/\/www.linkedin.com\/in\/skatox\/","https:\/\/www.youtube.com\/c\/MiguelAngelUsecheCastro","https:\/\/x.com\/skatox\/"]},{"@type":"Person","@id":"https:\/\/skatox.com\/blog\/#\/schema\/person\/e081bf33c5b0f1b0514e253cb578e1ba","name":"Miguel Useche","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822","url":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822","contentUrl":"https:\/\/skatox.com\/blog\/wp-content\/litespeed\/avatar\/aec95b02408138cb9d08288435373552.jpg?ver=1778809822","caption":"Miguel Useche"},"sameAs":["https:\/\/skatox.com","https:\/\/x.com\/skatox"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":3189,"url":"https:\/\/skatox.com\/blog\/2015\/08\/10\/como-crear-pruebas-unitarias-funcionales-con-yii-1-x-usando-composer\/","url_meta":{"origin":2545,"position":0},"title":"C\u00f3mo crear pruebas unitarias y funcionales con Yii 1.x usando Composer","author":"Miguel Useche","date":"10 de agosto de 2015","format":false,"excerpt":"Si tienes configurado tu proyecto hecho en Yii 1.x para cargar las clases mediante composer y deseas realizar pruebas automatizadas, notar\u00e1s que existen ciertas incompatibilidades entre Yii 1.x y el PHPUnit del repositorio de composer. A continuaci\u00f3n te explicar\u00e9 como instalarlo. Instalaci\u00f3n de las dependencias Lo primero es instalar todos\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"Selecci\u00f3n de PHPunit en Netbeans","src":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2015\/08\/phpunit-netbeans.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2015\/08\/phpunit-netbeans.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2015\/08\/phpunit-netbeans.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2268,"url":"https:\/\/skatox.com\/blog\/2012\/01\/14\/auto-completacion-de-codigo-php-con-yii-en-netbeans\/","url_meta":{"origin":2545,"position":1},"title":"Auto-completaci\u00f3n de c\u00f3digo PHP con YII en Netbeans","author":"Miguel Useche","date":"14 de enero de 2012","format":false,"excerpt":"Netbeans es mi IDE favorito desde hace a\u00f1os y \u00faltimamente me ha tocado realizar varios proyectos usando el framework Yii. Para todo desarrollador \/ programador es una realidad que no conocemos en totalidad un lenguaje o framework y por ello siempre estamos acudiendo a la documentaci\u00f3n\u00a0 para repasar sintaxis y\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"Completado de c\u00f3digo PHP con Yii en Netbeans","src":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2012\/01\/YiiAutoCompletionNetbeans.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2012\/01\/YiiAutoCompletionNetbeans.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2012\/01\/YiiAutoCompletionNetbeans.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2012\/01\/YiiAutoCompletionNetbeans.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3167,"url":"https:\/\/skatox.com\/blog\/2015\/05\/04\/como-hacer-yii-1-x-cargue-automaticamente-las-clases-de-composer\/","url_meta":{"origin":2545,"position":2},"title":"C\u00f3mo hacer que Yii 1.x cargue autom\u00e1ticamente las clases de Composer","author":"Miguel Useche","date":"4 de mayo de 2015","format":false,"excerpt":"Hoy en d\u00eda si programas una aplicaci\u00f3n en PHP, es muy probable que utilices composer para instalar y manejar las dependencias de tu programa; sin embargo, aunque es f\u00e1cil de utilizar e instalar dependencias, muchas veces tenemos problemas para instanciarlas en nuestra aplicaci\u00f3n por los distintos formatos existentes (debido a\u2026","rel":"","context":"En \u00abDesarrollo web\u00bb","block_context":{"text":"Desarrollo web","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/desarrollo-web\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":337,"url":"https:\/\/skatox.com\/blog\/2008\/07\/29\/netbeanstv-el-youtube-de-los-usuarios-de-netbeans\/","url_meta":{"origin":2545,"position":3},"title":"Netbeans.tv: El Youtube de los usuarios de Netbeans","author":"Miguel Useche","date":"29 de julio de 2008","format":false,"excerpt":"Sin son usuarios del IDE Netbeans, les encantar\u00e1 revisar de vez en cuando la p\u00e1gina https:\/\/netbeans.tv\/ que contiene mucha informaci\u00f3n aportada por la comunidad. Lo mejor de todo es que trae muchos Screencasts (digamos que tutoriales en video) y Podcasts (noticias, charlas, entrevistas en formato de audio) para conocer mas\u2026","rel":"","context":"En \u00abInform\u00e1tica\u00bb","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/skatox.com\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4709,"url":"https:\/\/skatox.com\/blog\/2024\/03\/08\/unit-testing-principles-practices-and-patterns\/","url_meta":{"origin":2545,"position":4},"title":"Unit Testing Principles, Practices, and Patterns: libro para iniciarte en el testing","author":"Miguel Useche","date":"8 de marzo de 2024","format":false,"excerpt":"Hace un par de a\u00f1os, me embarqu\u00e9 en la b\u00fasqueda de formas para potenciar mis habilidades en pruebas de software. Fue en un hilo de Twitter (ahora X) donde me top\u00e9 con una discusi\u00f3n sobre las diferencias entre stub y mock. En medio de esta conversaci\u00f3n, alguien recomend\u00f3 el libro\u2026","rel":"","context":"En \u00abDesarrollo y Programaci\u00f3n\u00bb","block_context":{"text":"Desarrollo y Programaci\u00f3n","link":"https:\/\/skatox.com\/blog\/category\/todo-lo-relacionado-al-desarrollo-de-software\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/03\/Unit-Testing-Principles-Practices-and-Patterns-.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/03\/Unit-Testing-Principles-Practices-and-Patterns-.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/03\/Unit-Testing-Principles-Practices-and-Patterns-.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/skatox.com\/blog\/images\/2024\/03\/Unit-Testing-Principles-Practices-and-Patterns-.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3179,"url":"https:\/\/skatox.com\/blog\/2015\/06\/09\/firefox-navegador-hecho-por-la-gente\/","url_meta":{"origin":2545,"position":5},"title":"Firefox un navegador hecho por la gente","author":"Miguel Useche","date":"9 de junio de 2015","format":false,"excerpt":"Viendo el canal de Youtube de Mozilla Hispano, vi un v\u00eddeo de la nueva campa\u00f1a de Firefox que me gust\u00f3 porque explica muy bien como se construye el navegador, las funcionalidades principales, el esp\u00edritu de privacidad y otro. As\u00ed que decid\u00ed compartirlo con ustedes junto al de los 10 a\u00f1os\u2026","rel":"","context":"En \u00abMozilla \/ Firefox \/ Thunderbird\u00bb","block_context":{"text":"Mozilla \/ Firefox \/ Thunderbird","link":"https:\/\/skatox.com\/blog\/category\/firefox\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/BfHY9q2ixCs\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts\/2545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/comments?post=2545"}],"version-history":[{"count":0,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/posts\/2545\/revisions"}],"wp:attachment":[{"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/media?parent=2545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/categories?post=2545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skatox.com\/blog\/wp-json\/wp\/v2\/tags?post=2545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}