猿问

附加到存储在变量中的域

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


噜噜哒
浏览 144回答 2
2回答

一只甜甜圈

根据Class URI的 java 文档:public final class URIextends Objectimplements Comparable<URI>, SerializableRepresents a Uniform Resource Identifier (URI) reference.URI实例具有以下九个组成部分:Component               Type--------------------    ------scheme                  Stringscheme-specific-part    Stringauthority               Stringuser-info               Stringhost                    Stringport                    intpath                    Stringquery                   Stringfragment                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: httpsScheme-specific-part: //seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/package-summary.htmlAuthority: seleniumhq.github.ioUser-info: nullHost: seleniumhq.github.ioPort: -1Path: httpsQuery: nullFragment: 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");

qq_笑_17

document.domain不返回 http/https,例如,它返回该站点的“stackoverflow.com”。我会用你开始的东西,String CurrentURL = driver.getCurrentUrl();将该 URL 转换为 a java.net.URI,然后使用.getHost(). 您可以将这一切包装到类似的方法中public static String getDomainName(String url) throws URISyntaxException {&nbsp; &nbsp; URI uri = new URI(url);&nbsp; &nbsp; String domain = uri.getHost();&nbsp; &nbsp; return domain.startsWith("www.") ? domain.substring(4) : domain;}并称之为String domainName = getDomainName(driver.getCurrentUrl());这个答案是我得到该方法的地方,它列出了有关此方法的注意事项,但听起来它可能对您有用。
随时随地看视频慕课网APP

相关分类

Java
我要回答