Querying
1. How to find and filter data in table
2. How to check if image is broken
3. How to check if condition is true
1. How to find and filter data in table
Use findBy("text") or filterBy("text") to get row with "text" from table.
Use excludeWith("text") to get rows without "text" from table.
Example:
@Test
public void testTableFilter() {
open("https://the-internet.herokuapp.com/tables");
SelenideElement _row = $$("#table1 > tbody > tr").findBy(text("Smith"));
/* Result:
* Smith John jsmith@gmail.com $50.00 http://www.jsmith.com edit delete
*/
ElementsCollection rows = $$("#table1 > tbody > tr").excludeWith(text("Doe"));
/* Result:
* Smith John jsmith@gmail.com $50.00 http://www.jsmith.com edit delete
* Bach Frank fbach@yahoo.com $51.00 http://www.frank.com edit delete
* Conway Tim tconway@earthlink.net $50.00 http://www.timconway.com edit delete
*/
ElementsCollection rows1 = $$("#table1.tablesorter tbody tr td").filterBy(text("Conway"));
/* Result:
* Conway
* tconway@earthlink.net
* /
}
2. How to check if image is broken
open("https://the-internet.herokuapp.com/broken_images");
assertTrue("Broken image1", $(By.xpath(".//*[@id='content']/div/img[1]")).isImage()); // fail
assertTrue("Broken image2", $(By.xpath(".//*[@id='content']/div/img[2]")).isImage()); // fail
assertTrue("Broken image3", $(By.xpath(".//*[@id='content']/div/img[3]")).isImage()); // pass
3. How to check if condition is true
The most common conditions:
$("#element").isSelected();
$("#element").isDisplayed();
$("#element").isEnabled();
$("#element").exists();
$("#element").isImage();
Or mix is() with other conditions. To get more information about Conditions please refer to 5. Conditions and Assertions
$("#element").is(Condition condition);
Cool, but about the second point. I've chekcing the broken images via next line of code:
ReplyDelete$$("img").forEach(SelenideElement::isImage);