package integration; import com.automation.remarks.video.annotations.Video; import com.codeborne.selenide.WebDriverRunner; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import java.util.Set; import static com.codeborne.selenide.Condition.text; import static com.codeborne.selenide.Selectors.byText; import static com.codeborne.selenide.Selenide.*; import static com.codeborne.selenide.WebDriverRunner.*; import static org.junit.Assume.assumeFalse; import static org.junit.Assume.assumeTrue; public class TabsTest extends IntegrationTest { @Before public void setUp() { openFile("page_with_tabs.html"); } @Test @Video public void userCanBrowseTabs_webdriver_api() { openFile("page_with_tabs.html"); WebDriver driver = WebDriverRunner.getWebDriver(); $(byText("Page1: uploads")).click(); Wait().until(ExpectedConditions.numberOfWindowsToBe(2)); $("h1").shouldHave(text("Tabs")); String windowHandle = driver.getWindowHandle(); driver.switchTo().window(nextWindowHandle(driver)); $("h1").shouldHave(text("File uploads")); driver.switchTo().window(windowHandle); $("h1").shouldHave(text("Tabs")); } private String nextWindowHandle(WebDriver driver) { String windowHandle = driver.getWindowHandle(); Set<String> windowHandles = driver.getWindowHandles(); windowHandles.remove(windowHandle); return windowHandles.iterator().next(); } @Test @Video public void canSwitchToWindowByTitle() { $(byText("Page2: alerts")).click(); $(byText("Page1: uploads")).click(); $(byText("Page3: jquery")).click(); $("h1").shouldHave(text("Tabs")); switchTo().window("Test::alerts"); $("h1").shouldHave(text("Page with alerts")); switchTo().window("Test::jquery"); $("h1").shouldHave(text("Page with JQuery")); switchTo().window("Test::uploads"); $("h1").shouldHave(text("File uploads")); switchTo().window("Test::tabs"); $("h1").shouldHave(text("Tabs")); } @Test @Video public void canSwitchToWindowByIndex_chrome() { assumeTrue(isChrome()); $(byText("Page2: alerts")).click(); $(byText("Page1: uploads")).click(); $(byText("Page3: jquery")).click(); $("h1").shouldHave(text("Tabs")); switchTo().window(1); $("h1").shouldHave(text("Page with JQuery")); switchTo().window(2); $("h1").shouldHave(text("File uploads")); switchTo().window(3); $("h1").shouldHave(text("Page with alerts")); switchTo().window(0); $("h1").shouldHave(text("Tabs")); } @Test @Video public void canSwitchToWindowByIndex_other_browsers_but_htmlunit() { assumeFalse(isChrome() || isHtmlUnit()); $(byText("Page2: alerts")).click(); $(byText("Page1: uploads")).click(); $(byText("Page3: jquery")).click(); $("h1").shouldHave(text("Tabs")); switchTo().window(1); $("h1").shouldHave(text("Page with alerts")); switchTo().window(2); $("h1").shouldHave(text("File uploads")); switchTo().window(3); $("h1").shouldHave(text("Page with JQuery")); switchTo().window(0); $("h1").shouldHave(text("Tabs")); } @Test @Video public void canSwitchBetweenWindowsWithSameTitles() { assumeFalse(isHtmlUnit()); $(byText("Page4: same title")).click(); $("h1").shouldHave(text("Tabs")); switchTo().window("Test::tabs::title"); $("body").shouldHave(text("Secret phrase 1")); String firstHandle = getWebDriver().getWindowHandle(); switchTo().window(0); $("h1").shouldHave(text("Tabs")); $(byText("Page5: same title")).click(); switchTo().window("Test::tabs::title"); $("body").shouldHave(text("Secret phrase 1")); switchTo().window(0); $("h1").shouldHave(text("Tabs")); // switchTo().windowExceptHandles("Test::tabs::title", firstHandle); $("body").shouldHave(text("Secret phrase 2")); // String secondHandle = getWebDriver().getWindowHandle(); // // switchTo().window(0); $("h1").shouldHave(text("Tabs")); // $(byText("Page6: same title")).click(); // switchTo().window("Test::tabs::title"); $("body").shouldHave(text("Secret phrase 1")); // switchTo().window(0); $("h1").shouldHave(text("Tabs")); // // switchTo().windowExceptHandles("Test::tabs::title", firstHandle, secondHandle); // $("body").shouldHave(text("Secret phrase 3")); // // switchTo().window("Test::tabs"); $("h1").shouldHave(text("Tabs")); } @After public void tearDown() { close(); } }