package jp.vmi.selenium.selenese.command; import java.net.URI; import java.net.URISyntaxException; import jp.vmi.selenium.selenese.Context; import jp.vmi.selenium.selenese.SeleneseRunnerRuntimeException; import jp.vmi.selenium.selenese.result.Result; import static jp.vmi.selenium.selenese.command.ArgumentType.*; import static jp.vmi.selenium.selenese.result.Success.*; /** * Command "open". */ public class Open extends AbstractCommand { private static final int ARG_URL = 0; Open(int index, String name, String... args) { super(index, name, args, VALUE); } @Override protected Result executeImpl(Context context, String... curArgs) { String url = curArgs[ARG_URL]; if (!url.contains("://")) { String baseURL = context.getCurrentBaseURL(); if (!baseURL.isEmpty() && baseURL.charAt(baseURL.length() - 1) != '/') baseURL += "/"; try { url = new URI(baseURL).resolve(url).toASCIIString(); } catch (URISyntaxException e) { throw new SeleneseRunnerRuntimeException("Invalid URL: baseURL=[" + baseURL + "] / parameter=[" + url + "]", e); } } context.getWrappedDriver().get(url); return SUCCESS; } }