package integration;
import com.codeborne.selenide.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static com.codeborne.selenide.CollectionCondition.size;
import static com.codeborne.selenide.Condition.attribute;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Configuration.SelectorMode.CSS;
import static com.codeborne.selenide.Configuration.SelectorMode.Sizzle;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$;
import static org.junit.Assert.assertEquals;
public class SizzleSelectorsTest extends IntegrationTest {
@Before
public void setUp() {
openFile("page_with_jquery.html");
Configuration.selectorMode = Sizzle;
}
@After
public void tearDown() {
Configuration.selectorMode = CSS;
}
@Test
public void canUseSizzleSelectors() {
$$(":input").shouldHave(size(4));
$$(":input:not(.masked)").shouldHave(size(3));
$$(":header").shouldHave(size(3)); // h1, h1, h2
$$(":parent").shouldHave(size(13)); // all non-leaf elements
$$(":not(:parent)").shouldHave(size(13)); // all leaf elements
// $$("input:visible").shouldHave(size(3)); Unfortunately Sizzle does not support ":visible" :(
$("input:first").shouldHave(attribute("name", "username"));
$("input:nth(1)").shouldHave(attribute("name", "password"));
$("input:last").shouldHave(attribute("id", "double-clickable-button"));
$("input[name!='username'][name!='password']").shouldHave(attribute("name", "rememberMe"));
$(":header").shouldHave(text("Page with JQuery"));
$(":header", 1).shouldHave(text("Now typing"));
$("label:contains('assword')").shouldHave(text("Password:"));
assertEquals("title", $(":parent:not('html'):not('head')").getTagName());
}
}