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 :)
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
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 –