Как программно нажать на букмарклет, который открывает окно Javascript, и проверить его содержимое? - PullRequest
0 голосов
/ 10 августа 2010

Я хочу открыть конкретный URL-адрес (относительно легко достичь в Watir / WatiN), а затем нажать на закладку / букмарклет, который, в свою очередь, открывает окно Javascript, в котором затем появляются определенные ссылки. Я хочу иметь возможность проверить формулировку ссылок и URL-адреса.

«Проблема» в том, что приходится использовать IE (7 и 8), а не Firefox, что мешает мне, например, использовать Selenium IDE, а Watir Recorder, похоже, не справляется со ссылкой Bookmarklet / Bookmark.

Я пытался использовать Wintask, который частично выполнил эту задачу, но я бы предпочел использовать обычный язык программирования для этой задачи, а не проприетарный инструмент / язык сценариев.

1 Ответ

1 голос
/ 11 августа 2010

Я думаю, что если вы хотите использовать такой инструмент, как Watir или Selenium, единственным решением будет выполнение JavaScript букмарклета из вашего тестового кода. Открытие порядковой закладки аналогично переходу по некоторому URL.

Вы можете получить букмарклет JavaScript из его свойств. Давайте возьмем Список всех ссылок букмарклет в качестве примера. Код JavaScript для:

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())}

Из скрипта видно, что имя открытого окна Z6 - оно нам понадобится в нашем коде. К сожалению, я мало знаю Watir, поэтому мой пример в Selenium 2.0 (он же WebDriver ) и в Java, но я думаю, что то же самое можно сделать в 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();

Насколько я понимаю, вы тестируете букмарклет. Если вам нужно изучить ссылки на странице, вы можете сделать это с помощью Selenium (и я считаю, что Watir также может сделать это:)

...