如何处理相同的多个窗口,例如谷歌在Selenium WebDriver与Java [英] How to handle same multiple windows e.g. google in Selenium WebDriver with Java

查看:129
本文介绍了如何处理相同的多个窗口,例如谷歌在Selenium WebDriver与Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用下面的代码试图打开同一个多个窗口Google。请帮我编辑本文并解释如何处理。

I have used the code below trying to open same multiple window "Google". Kindly help me in editing this and explaining how to handle this .

driver.switchTo().window("gbar");//not sure how to use this

以及在Selenium中尝试的以下代码:

and below code tried in Selenium:

package Testing;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import junit.framework.*;

public class Float {

    public static void setUp() {

        WebDriver driver = new FirefoxDriver();
        driver.navigate().to("https://www.google.com");
        driver.manage().window().maximize();
    }

    public static void main(String[] args) throws InterruptedException {

        WebDriver driver = new FirefoxDriver();
        driver.navigate().to("https://www.google.com");
        driver.manage().window().maximize();
        WebElement element = driver.findElement(By.name("q"));
        element.click();
        WebDriverWait wait = new WebDriverWait(driver, 80);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("q")));
        element.sendKeys("hi");
        element.clear();
        Thread.sleep(2000);
        element.sendKeys("hey");
        element.submit();
        setUp();

        driver.switchTo().window("gbar");// //* not sure how to use this *///
        WebElement element1 = driver.findElement(By.name("q"));
        element1.click();
        element1.sendKeys("hi");
        element1.clear();
        element1.sendKeys("hey");
        element1.submit();
        driver.quit();
    }
}


推荐答案

你您可以通过 driver.getWindowHandle()获取窗口的句柄,您可以切换到具有 driver.switchTo()的窗口。 );

You can get a handle to your window via driver.getWindowHandle()and you can switch to a window with driver.switchTo().window("handle");.

如果要打开一个新窗口,您可以点击链接 target = _blank或执行JavaScript以打开一个新窗口。然后,您将在 driver.getWindowHandles()中找到另一个句柄。一个可能的方法可能是:

If you want to open a new window you can click on a link with target="_blank" on the website or execute JavaScript to open a new window. Then you'll find another handle in driver.getWindowHandles(). A possible way could be:

WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com");
List<String> knownHandles = new ArrayList<String>();
knownHandles.add(driver.getWindowHandle());
((JavascriptExecutor)driver).executeScript("window.open();");
// find the new handle. we are getting a set 
for (String handle : driver.getWindowHandles()) {
    if (!knownHandles.contains(handle)) {
        knownHandles.add(handle);
        break;
    }
}
String newHandle = knownHandles.get(knownHandles.size() -1 );
driver.switchTo().window(newHandle);
driver.get("https://www.google.com");

另一种方法是注入锚点并通过JavaScript点击

这篇关于如何处理相同的多个窗口,例如谷歌在Selenium WebDriver与Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆