0

Je veux ouvrir une URL spécifique (relativement facile à atteindre dans Watir/WatiN), puis cliquer sur un signet/bookmarklet qui à son tour ouvre une fenêtre Javascript dans laquelle certains liens apparaissent. Je veux être en mesure de vérifier le libellé des liens et les URL. Le "problème" est de devoir utiliser IE (7 & 8) et non Firefox qui m'empêche d'utiliser Selenium IDE par exemple, et Watir Recorder ne semble pas capable de gérer le lien Bookmarklet/Bookmark.Comment puis-je cliquer sur un bookmarklet qui ouvre une fenêtre Javascript et vérifier le contenu de la fenêtre?

J'ai essayé d'utiliser Wintask qui a partiellement accompli cette tâche, mais je préférerais utiliser un langage de programmation standard pour cette tâche plutôt qu'un langage propriétaire d'outils/scripts.

Répondre

1

Je pense que si vous voulez utiliser un outil tel que Watir ou Selenium, la seule solution sera d'exécuter le bookmarklet JavaScript à partir de votre code de test. Ouvrir un signet ordinal est identique à la navigation vers une URL.

Vous pouvez obtenir le bookmarklet JavaScript à partir de ses propriétés. Prenons l'exemple d'un bookmarklet List All Links. Le JavaScript est pour est:

javascript:WN7z=open('','Z6','width=400,height=200,scrollbars,resizable,menubar');DL5e=document.links;with(WN7z.document){write('<base target=_blank>');for(lKi=0;lKi<DL5e.length;lKi++){write(DL5e[lKi].toString().link(DL5e[lKi])+'<br><br>')};void(close())} 

à partir du script, vous pouvez voir que le nom de la fenêtre ouverte est Z6 - nous en aurons besoin dans notre code. Malheureusement, je ne sais pas Watir beaucoup, donc mon exemple est en Sélénium 2.0 (aka WebDriver) et il est en Java, mais je pense que la même chose peut être fait en Watir:

WebDriver driver = new InternetExplorerDriver(); 
    // Open Google page 
    driver.get("http://www.google.com.ua/"); 
    // Search for something 
    WebElement searchField = driver.findElement(By.name("q")); 
    searchField.sendKeys("webdriver"); 
    searchField.submit(); 

    // Bookmarklet script, note that javascript: was removed from original booknarklet 
    String script = "WN7z=open('','Z6','width=400,height=200,scrollbars,resizable,menubar');DL5e=document.links;with(WN7z.document){write('<base%20target=_blank>');for(lKi=0;lKi<DL5e.length;lKi++){write(DL5e[lKi].toString().link(DL5e[lKi])+'<br><br>')};void(close())}"; 

    // Execute bookmarklet script 
    ((JavascriptExecutor) driver).executeScript(script); 

    // Switch to the newly opened window 
    driver.switchTo().window("Z6"); 

    // Find all the links in the bookmarklet window 
    List<WebElement> links = driver.findElements(By.tagName("a")); 

    // And list their text - you can do anything with them 
    for (WebElement link : links) { 
     System.out.println(link.getText()); 
    } 

    driver.quit(); 

Comme je comprends que vous testez le bookmarklet. Si vous avez besoin d'examiner les liens sur la page, vous pouvez le faire avec Selenium (et je crois que Watir est également capable de le faire :)

+0

Merci pour cette réponse détaillée! Quelques quiestions re: le code. 1. nom de la fenêtre -il fait partie du JavaScript du bookmarklet? Alors que la fenêtre a un nom permanent à chaque ouverture? 2. Je vérifie en effet la fonctionnalité du bookmarklet, c'est-à-dire le contenu de la fenêtre qu'il ouvre – akapulko2020

+0

Dans l'exemple que j'ai fourni, c'est le second argument de la fonction open. Et ce sera toujours pareil. Cependant, je ne connais pas votre code bookmarklet, vous devrez donc examiner le code JavaScript qui démarre le bookmarklet. Il est possible que le nom de la fenêtre soit généré aléatoirement. Le nom de la fenêtre est le deuxième argument de la fonction window.open et si vous l'appelez à partir de votre cade comme dans mon exemple, vous pourrez modifier son nom –

Questions connexes