Javascript 如何打开相邻选项卡中的第二个链接?

Javascript 如何打开相邻选项卡中的第二个链接?,javascript,selenium,selenium-webdriver,webdriverwait,window-handles,Javascript,Selenium,Selenium Webdriver,Webdriverwait,Window Handles,我一直在尝试许多功能来打开我最近打开的选项卡中的链接,但它不起作用 最少可重复的示例,注释说明每行之后会发生什么(使用Selenium webdriver,Java): 我希望Facebook改为在选项卡2中打开。一旦打开https://twitter.com作为基本url,然后打开https://google.com在相邻的上升中。接下来打开urlhttps://facebook.com在同一个相邻位置,您必须诱导WebDriverWait,并且可以使用以下解决方案: 代码块: public

我一直在尝试许多功能来打开我最近打开的选项卡中的链接,但它不起作用

最少可重复的示例,注释说明每行之后会发生什么(使用Selenium webdriver,Java):


我希望Facebook改为在选项卡2中打开。

一旦打开
https://twitter.com
作为基本url,然后打开
https://google.com
在相邻的上升中。接下来打开url
https://facebook.com
在同一个相邻位置,您必须诱导WebDriverWait,并且可以使用以下解决方案:

  • 代码块:

    public class A_demo 
    {
        public static void main(String[] args) throws Exception 
        {
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("start-maximized");
            options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
            options.setExperimentalOption("useAutomationExtension", false);
            WebDriver driver = new ChromeDriver(options);
            driver.get("https://twitter.com");
            String parent_window = driver.getWindowHandle();
            ((JavascriptExecutor) driver).executeScript("window.open('https://google.com');");
            new WebDriverWait(driver,5).until(ExpectedConditions.numberOfWindowsToBe(2));
            Set<String> allWindows = driver.getWindowHandles();
            for(String child_window:allWindows)
                if(!parent_window.equalsIgnoreCase(child_window))
                    driver.switchTo().window(child_window);
            driver.get("https://facebook.com");
            driver.quit();
        }
    }
    
    public class A\u演示
    {
    公共静态void main(字符串[]args)引发异常
    {
    System.setProperty(“webdriver.chrome.driver”,“C:\\Utility\\BrowserDrivers\\chromedriver.exe”);
    ChromeOptions选项=新的ChromeOptions();
    选项。添加参数(“开始最大化”);
    options.setExperimentalOption(“ExcludeSwitchs”、Collections.singletonList(“启用自动化”);
    options.setExperimentalOption(“useAutomationExtension”,false);
    WebDriver=新的ChromeDriver(选项);
    驱动程序。获取(“https://twitter.com");
    字符串parent_window=driver.getWindowHandle();
    ((JavascriptExecutor)驱动程序).executeScript(“window.open('https://google.com');");
    新的WebDriverWait(驱动程序,5)。直到(预期条件。窗口数为(2));
    设置allWindows=driver.getWindowHandles();
    用于(字符串子窗口:所有窗口)
    if(!父窗口.equalsIgnoreCase(子窗口))
    driver.switchTo()窗口(子窗口);
    驱动程序。获取(“https://facebook.com");
    driver.quit();
    }
    }
    

window.location.replace
替换当前选项卡中的位置相同的结果,请尝试。
public class A_demo 
{
    public static void main(String[] args) throws Exception 
    {
        System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("start-maximized");
        options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
        options.setExperimentalOption("useAutomationExtension", false);
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://twitter.com");
        String parent_window = driver.getWindowHandle();
        ((JavascriptExecutor) driver).executeScript("window.open('https://google.com');");
        new WebDriverWait(driver,5).until(ExpectedConditions.numberOfWindowsToBe(2));
        Set<String> allWindows = driver.getWindowHandles();
        for(String child_window:allWindows)
            if(!parent_window.equalsIgnoreCase(child_window))
                driver.switchTo().window(child_window);
        driver.get("https://facebook.com");
        driver.quit();
    }
}