package integration.errormessages; import com.codeborne.selenide.Configuration; import com.codeborne.selenide.SelenideElement; import integration.IntegrationTest; import org.junit.Before; import org.junit.Test; import static com.codeborne.selenide.Condition.*; import static com.codeborne.selenide.Selenide.$; import static com.codeborne.selenide.Selenide.$$; import static integration.helpers.HTMLBuilderForTestPreconditions.Given; import static org.junit.Assert.*; public class MethodCalledOnElementPassesOnTest extends IntegrationTest { @Before public void openPage() { Given.openedPageWithBody( "<ul>Hello to:", "<li class='the-expanse detective'>Miller <label>detective</label></li>", "<li class='the-expanse missing'>Julie Mao</li>", "</ul>" ); Configuration.timeout = 0; } @Test public void shouldCondition_When$Element() { SelenideElement element = $("ul li"); element.shouldHave(text("Miller")); } @Test public void actionWithoutWaiting__When$Element() { SelenideElement element = $("ul li"); assertTrue(element.isDisplayed()); } @Test public void actionWithoutWaiting_When$Element_WithNonExistentWebElement() { SelenideElement element = $("ul .nonexistent"); assertFalse(element.exists()); } @Test public void shouldCondition_WhenCollectionElementByIndex() { SelenideElement element = $$("ul li").get(0); element.shouldHave(text("Miller")); } @Test public void actionWithoutWaiting_Exists_WhenCollectionElement_WithNonExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("nonexistent")); assertFalse(element.exists()); } @Test public void actionWithoutWaiting_Exists_WhenCollectionElement_WithExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("detective")); assertTrue(element.exists()); } @Test public void actionWithoutWaiting_IsDisplayed_WhenCollectionElement_WithNonExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("nonexistent")); assertFalse(element.isDisplayed()); } @Test public void actionWithoutWaiting_IsDisplayed_WhenCollectionElement_WithExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("detective")); assertTrue(element.isDisplayed()); } @Test public void actionWithoutWaiting_Is_WhenCollectionElement_WithNonExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("nonexistent")); assertFalse(element.is(visible)); } @Test public void actionWithoutWaiting_Is_WhenCollectionElement_WithExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("detective")); assertTrue(element.is(visible)); } @Test public void actionWithoutWaiting_ToString_WhenCollectionElement_WithNonExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("nonexistent")); assertEquals("Element not found {ul li.findBy(css class 'nonexistent')}", element.toString()); } @Test public void actionWithoutWaiting_ToString_WhenCollectionElement_WithExistentWebElement() { SelenideElement element = $$("ul li").findBy(cssClass("detective")); assertTrue(element.toString().contains("Miller")); } @Test public void actionWithVisibilityWaiting_WhenCollectionElementByIndex() { SelenideElement element = $$("ul li").get(0); element.click(); } @Test public void shouldCondition_WhenCollectionElementByCondition() { SelenideElement element = $$("li").findBy(cssClass("the-expanse")); element.shouldBe(visible); } @Test public void actionWithExistenceWaiting_WhenCollectionElementByCondition() { SelenideElement element = $$("li").findBy(cssClass("the-expanse")); assertEquals("Miller detective", element.text()); } @Test public void shouldCondition_WhenInnerElement() { SelenideElement element = $("ul").find(".the-expanse"); element.shouldBe(visible); } @Test public void actionWithVisibilityWaiting_WhenInnerElement() { SelenideElement element = $("ul").find(".the-expanse"); element.doubleClick(); } /****************************************************** * More complicated useful options * $$.filterBy(condition).findBy(condition).find ******************************************************/ @Test public void shouldCondition_WhenInnerElementFromOuterElementByConditionInFilteredCollection() { SelenideElement element = $$("ul li").filterBy(cssClass("the-expanse")).findBy(cssClass("detective")).find("label"); element.shouldHave(exactText("detective")); } /****************************************************** * More complicated useful options * $$.filterBy(condition).get(index).find ******************************************************/ @Test public void shouldCondition_WhenInnerElementFromOuterElementFoundByIndexInFilteredCollection() { SelenideElement element = $$("ul li").filterBy(cssClass("the-expanse")).get(0).find("label"); element.shouldHave(exactText("detective")); } }