簡體   English   中英

我嘗試在 Chrome 瀏覽器中使用 Selenium (Java) 按 Ctrl+T

[英]I tried to press Ctrl+T using Selenium (Java) in the Chrome browser

我嘗試在 Chrome 瀏覽器中使用 Selenium (Java) 按Ctrl + T。 控制台沒有報錯,但是瀏覽器沒有打開新標簽頁。 我想知道為什么會這樣。 我試圖在 Stack Overflow 上查找,但沒有找到任何准確的答案。

這是我的代碼:

package automation1;

import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class Action {

    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver",
                "C:\\Users\\asus\\OneDrive\\Desktop\\Jar\\chromedriver_win32\\chromedriver.exe");

        WebDriver chromedriver = new ChromeDriver();
        chromedriver.get("https://xenodochial-meninsky-118d47.netlify.app/");
        chromedriver.manage().window().fullscreen();
        
        Actions a = new Actions(chromedriver) ;
          Thread.sleep(3000) ;
        a.sendKeys(Keys.CONTROL +"t").build().perform() ;
        
    }

}

為什么這不會在 Chrome 瀏覽器中打開新標簽頁?

有一個使用org.openqa.selenium.interactions.Actions的解決方案。

對於 selenium 3.141.59:

pom.xml 依賴:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.141.59</version>
</dependency>

代碼:

package tests;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class TejveerNaruka {

    public static void main(String[] args) {
        String chromedriverPath = System.getProperty("user.dir") + "\\resources\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", chromedriverPath);
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--ignore-certificate-errors");
        options.addArguments("--start-maximized");
        options.addArguments("--disable-notifications");
        WebDriver driver = new ChromeDriver(options);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;

        driver.get("https://www.stackoverflow.com");
        System.out.println(driver.getTitle());
        
        // open new tab using javascript
        jsExecutor.executeScript("window.open()");
        
        // get Window handles, identifications of all browser tabs and windows
        List<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
        
        // switch to second tab
        driver.switchTo().window(windowHandles.get(1));
        
        // prints title of the second tab (empty line)
        System.out.println(driver.getTitle());

        // navigate driver in the second tab
        driver.get("https://www.zemancountdown.cz/");

        // prints title of the second tab           
        System.out.println(driver.getTitle());
        
        // close second tab
        jsExecutor.executeScript("window.close()");
        
        // switch to the first tab
        driver.switchTo().window(windowHandles.get(0));
        
        //prints title of the first tab 
        System.out.println(driver.getTitle());

        driver.quit();
    }

}

Output:

Starting ChromeDriver 108.0.5359.71 (1e0e3868ee06e91ad636a874420e3ca3ae3756ac-refs/branch-heads/5359@{#1016}) on port 18498
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Pro 12, 2022 12:50:43 ODP. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Stack Overflow - Where Developers Learn, Share, & Build Careers

Miloš Zeman Countdown
Stack Overflow - Where Developers Learn, Share, & Build Careers

另一個例子現在是 selenium 4:

pom.xml 依賴:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.7.1</version>
</dependency>

代碼:

package tests;

import java.time.Duration;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WindowType;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class TejveerNaruka {

    public static void main(String[] args) {
        String chromedriverPath = System.getProperty("user.dir") + "\\resources\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", chromedriverPath);
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--ignore-certificate-errors");
        options.addArguments("--start-maximized");
        options.addArguments("--disable-notifications");
        WebDriver driver = new ChromeDriver(options);
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

        // navigate driver and print title
        driver.get("https://www.stackoverflow.com");
        System.out.println(driver.getTitle());
        
        // create second driver in new tab
        WebDriver driver2 = driver.switchTo().newWindow(WindowType.TAB);
        
        // prints empty line
        System.out.println(driver2.getTitle());
        
        // navigate driver2 and print title
        driver2.get("https://www.zemancountdown.cz/");
        System.out.println(driver2.getTitle());
        
        driver2.quit();
        driver.quit();
    }

}

Output:

Starting ChromeDriver 108.0.5359.71 (1e0e3868ee06e91ad636a874420e3ca3ae3756ac-refs/branch-heads/5359@{#1016}) on port 24322
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Stack Overflow - Where Developers Learn, Share, & Build Careers

Miloš Zeman Countdown

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM