Java Selenide 窗口切换:如何切换到最新的窗口
Java Selenide 窗口切换:切换到最新的窗口
在使用 Selenide 进行自动化测试时,你可能需要处理打开多个浏览器窗口的情况。例如,当你在一个窗口中点击链接时,可能会在新窗口中打开一个页面。本文将介绍如何使用 Selenide 切换到最新的窗口,并执行操作。
示例代码
以下示例代码展示了如何使用 Selenide 切换到最新的窗口:
import com.codeborne.selenide.Condition;import com.codeborne.selenide.Selenide;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import static com.codeborne.selenide.Selenide.*;import static com.codeborne.selenide.WebDriverRunner.getWebDriver;public class WindowSwitchingExample { @Test public void testWindowSwitching() { // 打开第一个窗口 open("https://www.google.com"); // 在第一个窗口中点击一个链接,打开新窗口 $(By.linkText("Gmail")).click(); // 切换到新打开的窗口 switchTo().window(1); // 在新窗口中进行一些操作 $(By.id("identifierId")).shouldBe(Condition.visible).setValue("example@gmail.com"); // 切换回到第一个窗口 switchTo().window(0); // 在第一个窗口中进行一些操作 $(By.name("q")).shouldBe(Condition.visible).setValue("Selenide"); // 关闭第一个窗口 getWebDriver().close(); // 切换回到新窗口 switchTo().window(1); // 在新窗口中进行一些操作 $(By.id("identifierNext")).shouldBe(Condition.visible).click(); // 关闭新窗口 getWebDriver().close(); // 切换回到第一个窗口 switchTo().window(0); // 在第一个窗口中进行一些操作 $(By.name("q")).shouldBe(Condition.visible).setValue("Selenide is awesome"); // 在第一个窗口中点击一个链接,打开另一个新窗口 $(By.linkText("Selenide: concise UI tests in Java")).click(); // 切换到最新打开的窗口 switchTo().window(getWebDriver().getWindowHandles().size() - 1); // 在新窗口中进行一些操作 $(By.cssSelector(".header-title")).shouldBe(Condition.visible).shouldHave(Condition.text("Selenide: concise UI tests in Java")); // 关闭新窗口 getWebDriver().close(); // 切换回到第一个窗口 switchTo().window(0); // 在第一个窗口中进行一些操作 $(By.name("q")).shouldBe(Condition.visible).setValue("Selenide documentation"); }}这个示例代码打开了 Google 主页,并在第一个窗口中点击了 "Gmail" 链接,打开了一个新的窗口。然后切换到新窗口,进行了一些操作。然后切换回到第一个窗口,并关闭了第一个窗口。接着切换回到新窗口,进行了一些操作。最后关闭了新窗口,切换回到第一个窗口,并进行了一些操作。
解释
1. **打开第一个窗口:** 使用 `open("https://www.google.com");` 打开 Google 主页。
2. **打开新窗口:** 点击 "Gmail" 链接打开新的窗口。
3. **切换到新窗口:** 使用 `switchTo().window(1);` 切换到第二个窗口,索引从 0 开始。你也可以使用 `switchTo().window(getWebDriver().getWindowHandles().size() - 1);` 切换到最新的窗口。
4. **在新窗口中操作:** 在新窗口中执行操作。
5. **切换回第一个窗口:** 使用 `switchTo().window(0);` 切换回到第一个窗口。
6. **在第一个窗口中操作:** 在第一个窗口中执行操作。
7. **关闭第一个窗口:** 使用 `getWebDriver().close();` 关闭第一个窗口。
8. **切换回新窗口:** 使用 `switchTo().window(1);` 切换回到新窗口。
9. **在新窗口中操作:** 在新窗口中执行操作。
10. **关闭新窗口:** 使用 `getWebDriver().close();` 关闭新窗口。
11. **切换回第一个窗口:** 使用 `switchTo().window(0);` 切换回到第一个窗口。
12. **在第一个窗口中操作:** 在第一个窗口中执行操作。
13. **打开另一个新窗口:** 点击另一个链接打开新的窗口。
14. **切换到最新打开的窗口:** 使用 `switchTo().window(getWebDriver().getWindowHandles().size() - 1);` 切换到最新的窗口。
15. **在新窗口中操作:** 在新窗口中执行操作。
16. **关闭新窗口:** 使用 `getWebDriver().close();` 关闭新窗口。
17. **切换回第一个窗口:** 使用 `switchTo().window(0);` 切换回到第一个窗口。
18. **在第一个窗口中操作:** 在第一个窗口中执行操作。
总结
通过使用 Selenide 的 `switchTo().window()` 方法,你可以轻松地切换到不同的浏览器窗口,并在每个窗口中执行相应的操作。记住使用 `getWebDriver().getWindowHandles().size() - 1` 获取最新打开窗口的索引。
原文地址: https://www.cveoy.top/t/topic/qwrQ 著作权归作者所有。请勿转载和采集!