java - 附加到存储在变量中的域
问题描述
我正在使用 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");
解决方案
根据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");
推荐阅读
- c++ - 在代码块上未定义对 wsastartup@8' 的引用,帮帮我
- c++ - 为不同大小分配内存
- javascript - 如何减少 html+css 中动态生成的 div 标签的填充/间距?
- bash - 用后缀重命名文件
- apache-kafka - 如何检查 Kafka 主题内存使用情况?
- tmux - 如何在 iTerm2 上的 tmux 中修复/恢复鼠标控件?
- javascript - 响应式菜单在调整为桌面屏幕大小时不会消失
- python - FileNotFoundError:没有这样的文件或目录。即使它存在
- c++ - 模板特化的运算符重载
- javascript - 如何向下滚动/将高大的导航栏聚焦到活动链接