Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 附加到存储在变量中的域_Java_Selenium_Url_Append - Fatal编程技术网

Java 附加到存储在变量中的域

Java 附加到存储在变量中的域,java,selenium,url,append,Java,Selenium,Url,Append,我正在使用SeleniumWebDriver+Java+TestNG(以防这对任何事情都有影响) 我试图做的是获取当前域,将其存储为变量,然后在该变量上附加一些内容并导航到结果URL 这就是我正在尝试的,它获得了域名,但导航失败。说这是一个无效的论点 String CurrentURL = driver.getCurrentUrl(); JavascriptExecutor js = (JavascriptExecutor) driver; String domain = (String) js

我正在使用SeleniumWebDriver+Java+TestNG(以防这对任何事情都有影响)

我试图做的是获取当前域,将其存储为变量,然后在该变量上附加一些内容并导航到结果URL

这就是我正在尝试的,它获得了域名,但导航失败。说这是一个无效的论点

String CurrentURL = driver.getCurrentUrl();
JavascriptExecutor js = (JavascriptExecutor) driver;
String domain = (String) js.executeScript("return document.domain");
System.out.println("My Current Domain is: "+domain);
driver.navigate().to(domain+"/lightning/o/Lead/home");


document.domain
不返回http/https,例如,它为此站点返回“stackoverflow.com”

我会用你刚开始的

String CurrentURL = driver.getCurrentUrl();
将该URL转换为,然后使用
.getHost()
。您可以将这一切包装到一个方法中,如

public static String getDomainName(String url) throws URISyntaxException {
    URI uri = new URI(url);
    String domain = uri.getHost();
    return domain.startsWith("www.") ? domain.substring(4) : domain;
}
就这样说吧

String domainName = getDomainName(driver.getCurrentUrl());
这是我获得该方法的地方,它列出了关于该方法的注意事项,但听起来它可能适合您。

根据以下java文档:

由于您已经通过
getCurrentUrl()
提取了当前url,您可以将当前url转换为uri,并提取每个组件,如下所示(使用
https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/package-summary.html
):

  • 代码块:

    import java.net.URI;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    
    public class A_demo 
    {
        public static void main(String[] args) throws URISyntaxException 
        {
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("start-maximized");
            WebDriver driver = new ChromeDriver(options);
            driver.get("https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/package-summary.html");
            String CurrentURL = driver.getCurrentUrl();
            URI uri = new URI(CurrentURL);
            System.out.println("Scheme: "+uri.getScheme());
            System.out.println("Scheme-specific-part: "+uri.getSchemeSpecificPart());
            System.out.println("Authority: "+uri.getAuthority());
            System.out.println("User-info: "+uri.getUserInfo());
            System.out.println("Host: "+uri.getHost());
            System.out.println("Port: "+uri.getPort());
            System.out.println("Path: "+uri.getScheme());
            System.out.println("Query: "+uri.getQuery());
            System.out.println("Fragment: "+uri.getFragment());
        }
    }
    
  • 控制台输出

    Scheme: https
    Scheme-specific-part: //seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/package-summary.html
    Authority: seleniumhq.github.io
    User-info: null
    Host: seleniumhq.github.io
    Port: -1
    Path: https
    Query: null
    Fragment: null
    
最后,构造
https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.html
您可以执行以下操作:

driver.navigate().to(uri.getScheme()+"://"+uri.getHost()+"/selenium/docs/api/java/org/openqa/selenium/WebDriver.html");

非常感谢。但是,它得到了我需要的域名。我在打印时看到了。问题是我不能让它导航到那个域(并附加到它),我不明白为什么。这是导航部分,我试图让它工作,这对我来说没有意义,为什么它不工作,但再一次,我在学习java的过程中学习goOkay,这是可行的,但它要求我在调用它的函数中加入抛出的URISyntaxException。因为这是一个导航功能,所以它将在每个脚本中被调用。这会导致任何问题吗?“我不习惯用那种东西,因为我是一个相对的新手。”ShelleyCollett是的,你是对的。URI应该抛出URISyntaxException。更新了答案。我在我的框架内使用基本异常进行开发。
Scheme: https
Scheme-specific-part: //seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/package-summary.html
Authority: seleniumhq.github.io
User-info: null
Host: seleniumhq.github.io
Port: -1
Path: https
Query: null
Fragment: null
driver.navigate().to(uri.getScheme()+"://"+uri.getHost()+"/selenium/docs/api/java/org/openqa/selenium/WebDriver.html");