package com.codeborne.selenide;
import com.codeborne.selenide.Selectors.ByText;
import com.codeborne.selenide.Selectors.WithText;
import org.junit.Test;
import org.openqa.selenium.By;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class SelectorsTest {
@Test
public void withTextUsesXPath() {
By selector = Selectors.withText("john");
assertTrue(selector instanceof By.ByXPath);
assertEquals("with text: john", selector.toString());
assertEquals(".//*/text()[contains(normalize-space(.), \"john\")]/parent::*", ((WithText) selector).getXPath());
}
@Test
public void withTextEscapesQuotes() {
By selector = Selectors.withText("Ludvig'van\"Beethoven");
assertEquals("with text: Ludvig'van\"Beethoven", selector.toString());
assertTrue(selector instanceof By.ByXPath);
assertEquals(".//*/text()[contains(normalize-space(.), concat(\"Ludvig'van\", '\"', \"Beethoven\"))]/parent::*",
((WithText) selector).getXPath());
}
@Test
public void byTextUsesXPath() {
By selector = Selectors.byText("john");
assertEquals("by text: john", selector.toString());
assertTrue(selector instanceof By.ByXPath);
assertEquals(".//*/text()[normalize-space(.) = \"john\"]/parent::*", ((ByText) selector).getXPath());
}
@Test
public void byTextEscapesQuotes() {
By selector = Selectors.byText("Ludvig'van\"Beethoven");
assertEquals("by text: Ludvig'van\"Beethoven", selector.toString());
assertTrue(selector instanceof By.ByXPath);
assertEquals(".//*/text()[normalize-space(.) = concat(\"Ludvig'van\", '\"', \"Beethoven\")]/parent::*",
((ByText) selector).getXPath());
}
@Test
public void byAttributeUsesXPath() {
By selector = Selectors.byAttribute("value", "катя");
assertEquals("By.cssSelector: [value='катя']", selector.toString());
}
@Test
public void byAttributeEscapesQuotes() {
By selector = Selectors.byAttribute("value", "Ludvig'van\"Beethoven");
assertEquals("By.cssSelector: [value='Ludvig'van\"Beethoven']", selector.toString());
}
@Test
public void userCanFindElementByAnyAttribute() {
By selector = Selectors.by("data-account-id", "666");
assertEquals("By.cssSelector: [data-account-id='666']", selector.toString());
}
@Test
public void byTitleUsesXPath() {
By selector = Selectors.byTitle("PDF report");
assertEquals("By.cssSelector: [title='PDF report']", selector.toString());
}
@Test
public void byValueUsesXPath() {
By selector = Selectors.byValue("водокачка");
assertEquals("By.cssSelector: [value='водокачка']", selector.toString());
}
}