gpt4 book ai didi

java - 如何处理相同的多个窗口,例如使用 Java 在 Selenium WebDriver 中搜索谷歌

转载 作者:搜寻专家 更新时间:2023-11-01 02:48:02 25 4
gpt4 key购买 nike

我使用下面的代码尝试打开相同的多窗口“Google”。请帮助我编辑它并解释如何处理它。

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

下面的代码在 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().window("handle"); 切换到一个窗口.

如果你想打开一个新窗口,你可以点击带有target="_blank" 的链接。在网站上或执行 JavaScript 以打开一个新窗口。然后你会在 driver.getWindowHandles() 中找到另一个句柄.一种可能的方法是:

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");

另一种方法是inject the anchor and click it via JavaScript .

关于java - 如何处理相同的多个窗口,例如使用 Java 在 Selenium WebDriver 中搜索谷歌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com