我正在打开浏览器并登录到网页。现在,我想打开一个新选项卡,并使用新打开的选项卡中的另一个链接

问题描述 投票:1回答:1
public static void main(String[] args) {

System.setProperty("webdriver.gecko.driver", "geckodriver");
WebDriver driver = new FirefoxDriver();

String baseUrl = "https://accounts.zoho.in/signin?servicename=google";

driver.get(baseUrl);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement email = driver.findElement(By.xpath("//*[@id=\"login_id\"]"));
email.sendKeys("xxxxxxxx.xmail.com");
WebElement nextbutton = driver.findElement(By.xpath("//*[@id=\"nextbtn\"]"));
nextbutton.click();
driver.manage().timeouts().implicitlyWait(5000, TimeUnit.SECONDS);
WebElement password = driver.findElement(By.xpath("//*[@id=\"password\"]"));
password.sendKeys("123456789");
WebElement submit = driver.findElement(By.xpath("//*[@id=\"nextbtn\"]"));
submit.click();

driver.manage().timeouts().implicitlyWait(20000, TimeUnit.MICROSECONDS);

String oldTab = driver.getWindowHandle();
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
ArrayList<String> newTab = new ArrayList<String>(driver.getWindowHandles());
newTab.remove(oldTab);
driver.switchTo().window(newTab.get(0));
}

有人可以帮我提供此代码吗?我的代码不起作用(我是一个初学者)。我可以按照我的要求登录,但是我无法打开新选项卡,并且在转到新打开的选项卡中的另一个链接时也需要帮助。

org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at newProject.MyFirstClass.main(MyFirstClass.java:80)
selenium selenium-webdriver selenium-chromedriver selenium-ide selenium-grid
1个回答
0
投票

您可以使用javascript执行器来完成

    String baseUrl = "https://accounts.zoho.in/signin?servicename=google";
    driver.get(baseUrl);
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    ((JavascriptExecutor) driver).executeScript("window.open()"); //open window 1
     ((JavascriptExecutor) driver).executeScript("window.open()"); //open window 2
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); //number of window WindowHandler array
    driver.switchTo().window(tabs.get(1)); 
    driver.get("https://www.google.com");
    driver.switchTo().window(tabs.get(2)); 
    driver.get("https://www.yahoo.com");

希望它能解决您的问题

© www.soinside.com 2019 - 2024. All rights reserved.