コード例 #1
0
 public void reset(String baseUrl) {
   LOGGER.debug("resetting frame group");
   if (proxyInjectionMode) {
     // shut down all but the primary top level connection
     List<FrameAddress> newOrphans = new LinkedList<FrameAddress>();
     for (String uniqueId : uniqueIdToCommandQueue.keySet()) {
       CommandQueue q = getCommandQueue(uniqueId);
       FrameAddress frameAddress = q.getFrameAddress();
       if (frameAddress.getLocalFrameAddress().equals(DEFAULT_LOCAL_FRAME_ADDRESS)
           && frameAddress.getWindowName().equals(DEFAULT_SELENIUM_WINDOW_NAME)) {
         continue;
       }
       if (frameAddress.getLocalFrameAddress().equals(DEFAULT_LOCAL_FRAME_ADDRESS)) {
         if (LOGGER.isDebugEnabled()) {
           LOGGER.debug("Trying to close " + frameAddress);
         }
         try {
           q.doCommandWithoutWaitingForAResponse("close", "", "");
         } catch (WindowClosedException e) {
           LOGGER.debug("Window was already closed");
         }
       }
       orphanedQueues.add(q);
       newOrphans.add(frameAddress);
     }
     for (FrameAddress frameAddress : newOrphans) {
       uniqueIdToCommandQueue.remove(frameAddress);
     }
   }
   removeTemporaryFiles();
   selectWindow(DEFAULT_SELENIUM_WINDOW_NAME);
   // String defaultUrl = "http://localhost:"
   StringBuilder openUrl = new StringBuilder();
   if (proxyInjectionMode) {
     openUrl.append("http://localhost:");
     openUrl.append(portDriversShouldContact);
     openUrl.append("/selenium-server/core/InjectedRemoteRunner.html");
   } else {
     openUrl.append(LauncherUtils.stripStartURL(baseUrl));
   }
   try {
     doCommand("open", openUrl.toString(), ""); // will close out subframes
   } catch (RemoteCommandException rce) {
     LOGGER.debug("RemoteCommandException in reset: " + rce.getMessage());
   }
 }
コード例 #2
0
 private void setCurrentFrameAddress(String uniqueId) {
   assert uniqueId != null;
   FrameAddress frameAddress = uniqueIdToCommandQueue.get(uniqueId).getFrameAddress();
   this.currentUniqueId = uniqueId;
   this.currentFrameAddress = frameAddress;
   this.currentSeleniumWindowName = frameAddress.getWindowName();
   this.currentLocalFrameAddress = frameAddress.getLocalFrameAddress();
   markWhetherJustLoaded(uniqueId, false);
   if (LOGGER.isDebugEnabled()) {
     LOGGER.debug("Current uniqueId set to " + uniqueId + ", frameAddress = " + frameAddress);
   }
 }
コード例 #3
0
 /**
  * Does uniqueId point at a window that matches 'windowName'/'localFrame'?
  *
  * @param uniqueId
  * @param windowName
  * @param localFrame
  * @return True if the frame addressed by uniqueId is addressable by window name 'windowName' and
  *     local frame address 'localFrame'.
  */
 private boolean matchesFrameAddress(String uniqueId, String windowName, String localFrame) {
   // it's an odd selenium convention: "null" maps to the initial, main window:
   if (windowName == null || windowName.equals("null")) {
     windowName = DEFAULT_SELENIUM_WINDOW_NAME;
   }
   if (localFrame == null) {
     localFrame = "top";
   }
   CommandQueue queue = uniqueIdToCommandQueue.get(uniqueId);
   if (queue.isClosed()) {
     return false;
   }
   boolean windowJustLoaded = justLoaded(uniqueId);
   FrameAddress frameAddress = queue.getFrameAddress();
   if (!frameAddress.getLocalFrameAddress().equals(localFrame)) {
     return false;
   }
   // DGF Windows that have just loaded may not know their true identity
   if (windowJustLoaded) {
     String title;
     try {
       title = getRemoteWindowTitle(queue);
     } catch (WindowClosedException e) {
       return false;
     }
     markWhetherJustLoaded(uniqueId, true);
     if (title.equals(windowName)) {
       return true;
     }
   }
   String actualWindowName = frameAddress.getWindowName();
   if (windowName.equals(actualWindowName)) {
     return true;
   }
   if (windowName.equals("_blank") && actualWindowName.startsWith("selenium_blank")) {
     // DGF the API automatically changed target="_blank" to target="selenium_blank12345"
     return true;
   }
   return uniqueIdToCommandQueue.get(uniqueId).isWindowPointedToByJsVariable(windowName);
 }