如何处理相同的多个窗口,例如谷歌在Selenium WebDriver与Java [英] How to handle same multiple windows e.g. google in Selenium WebDriver with 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屋!