jueves, 10 de noviembre de 2016

scroll To Element con Selenium

Problemática: A veces hay elementos que se encuentran pero no se ejecuta su acción (como el click) cuando utilizo RemoteWebDriver. Una vez estudiado el problema he visto que en ciertos casos extraños si el elemento en cuestión no está en la zona visible del navegador, Selenium encuentra el objeto pero no puede realizar ninguna acción.
Para solucionar/evitar este problema se puede ejecutar javascript que haga scroll hasta el elemento deseado, así siempre será visible y se podrán hacer acciones sobre él.

Este sería el metodo a utilizar:

public static void scrollToElement(WebDriver driver, WebElement element) { JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver; javascriptExecutor.executeScript("arguments[0].scrollIntoView(true);", element); }

miércoles, 26 de octubre de 2016

Tutorial git interactivo

https://try.github.io/levels/1/challenges/9

Ejemplo de uso de JGit para obtener un csv de cambios de release

 package XXXX;  
 import java.io.File;  
 import java.io.IOException;  
 import java.text.ParseException;  
 import java.text.SimpleDateFormat;  
 import java.util.Date;  
 import java.util.Iterator;  
 import org.apache.commons.io.FileUtils;  
 import org.apache.commons.lang3.StringUtils;  
 import org.eclipse.jgit.api.Git;  
 import org.eclipse.jgit.api.errors.GitAPIException;  
 import org.eclipse.jgit.lib.ObjectId;  
 import org.eclipse.jgit.lib.Ref;  
 import org.eclipse.jgit.lib.Repository;  
 import org.eclipse.jgit.revwalk.RevCommit;  
 import org.eclipse.jgit.storage.file.FileRepositoryBuilder;  
 public class ReleaseNotesGenerator {  
   private static ObjectId findActualRefObjectId(Ref ref, Repository repo) {  
     final Ref repoPeeled = repo.peel(ref);  
     if (repoPeeled.getPeeledObjectId() != null) {  
       return repoPeeled.getPeeledObjectId();  
     }  
     return ref.getObjectId();  
   }  
   private static void gitLogFromTagToNow(Repository repository, String tag1, String version, String pathFile)  
       throws IOException, GitAPIException, ParseException {  
     Git git = new Git(repository);  
     Ref refFrom = repository.findRef(tag1);  
     RevCommit latestCommit = git.log().call().iterator().next();  
     Iterable<RevCommit> log = git.log().addRange(findActualRefObjectId(refFrom, repository), latestCommit).call();  
     StringBuilder csvLines = new StringBuilder();  
     csvLines.append(StringUtils.join(new String[] { CABECERAS DE LOS CAMPOS QUE SE QUIERAN AÑADIR }, ";")  
         + "\n");  
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");  
     for (Iterator<RevCommit> iterator = log.iterator(); iterator.hasNext();) {  
       RevCommit rev = iterator.next();  
       String[] splittedMessage = rev.getFullMessage().split("\\r?\\n");  
       if (splittedMessage.length == 6) {  
         cleanMessages(splittedMessage);  
         csvLines.append(StringUtils.join(  
             new String[] { splittedMessage[1], splittedMessage[2], .... CAMPOS OBTENIDOS DE CADA MENSAJE},  
             ";") + "\n");  
       }  
     }  
     FileUtils  
         .writeByteArrayToFile(  
             new File(pathFile + "_" + version + "_"  
                 + new SimpleDateFormat("ddMMyyyy_hhmm").format(new Date()) + ".csv"),  
             csvLines.toString().getBytes());  
     git.close();  
   }  
   private static void cleanMessages(String[] splittedMessage) {  
     for (int i = 0; i < splittedMessage.length; i++) {  
       splittedMessage[i] = splittedMessage[i].replaceAll("\\[.*\\]", "");  
     }  
   }  
   public static void main(String[] args) throws IOException, GitAPIException, ParseException {  
     String version = "versionFromMaven";  
     String fromRevision = "V5.5.0";  
     if (args != null && args.length > 0) {  
       fromRevision = args[0];  
       if (args != null && args.length > 1) {  
         version = args[1];  
       }  
     }  
     System.out.println("fromRevision:" + fromRevision + " version:" + version);  
     FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();  
     repositoryBuilder.setMustExist(true);  
     File gitBase = new File(".git");  
     String pathFile = "resources/releaseNotes/releaseNotes";  
     if (!gitBase.exists()) {  
       gitBase = new File("../.git");  
       pathFile = "../resources/releaseNotes/releaseNotes";  
     }  
     System.out.println("gitBasePath:" + gitBase.getAbsolutePath());  
     repositoryBuilder.setGitDir(gitBase);  
     Repository repository = repositoryBuilder.build();  
     if (repository.getObjectDatabase().exists()) {  
       gitLogFromTagToNow(repository, fromRevision, version, pathFile);  
     }  
   }  
 }  

martes, 11 de octubre de 2016

Activar chats en grupo en Skype en Linux

Si al instalar Skype no ves tus grupos ejecuta este comando en cualquier conversación.
/msnp24
 
Y cierra y vuelve a abrir skype.