首页 > 解决方案 > 附加到存储在变量中的域

问题描述

我正在使用 Selenium Webdriver + 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");

标签: javaseleniumurlappend

解决方案


根据Class URI的 java 文档:

public final class URI
extends Object
implements Comparable<URI>, Serializable
Represents a Uniform Resource Identifier (URI) reference.

URI实例具有以下九个组件:

Component               Type
--------------------    ------
scheme                  String
scheme-specific-part    String
authority               String
user-info               String
host                    String
port                    int
path                    String
query                   String
fragment                String

由于您已经通过提取当前 urlgetCurrentUrl() ,您可以将当前 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
    

最后,要构造结果 URL,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");

推荐阅读