How to use Component class of org.fluentlenium.core.domain package

Best FluentLenium code snippet using org.fluentlenium.core.domain.Component

Source:SearchModule.java Github

copy

Full Screen

1package Modules;2import org.fluentlenium.core.FluentControl;3import org.fluentlenium.core.components.ComponentInstantiator;4import org.fluentlenium.core.domain.FluentWebElement;5import org.fluentlenium.core.domain.FluentList;6import org.openqa.selenium.WebElement;7import static org.fluentlenium.core.filter.FilterConstructor.*;8public class SearchModule extends BasicModule9{10 public SearchModule(WebElement element, FluentControl control, ComponentInstantiator instantiator)11 {12 super(element, control, instantiator);13 }14 /*15 Input keyword in the searchbar on main page, then click submit button16 */17 public void searchFor(String keyword)18 {19 FluentWebElement searchBar = el("input", withId("twotabsearchtextbox"));20 searchBar.fill().withText(keyword);21 FluentWebElement button_Submit = el("div",withClass("nav-right"))22 .el("input", withClass("nav-input"));23 button_Submit.click();24 }...

Full Screen

Full Screen

Source:AddToCartConfirmation.java Github

copy

Full Screen

1package com.ecommerce.section;2import org.fluentlenium.core.FluentControl;3import org.fluentlenium.core.components.ComponentInstantiator;4import org.fluentlenium.core.domain.FluentWebElement;5import org.openqa.selenium.WebElement;6import org.openqa.selenium.support.FindBy;7public class AddToCartConfirmation extends FluentWebElement {8 @FindBy(css = "[data-automation=continue-shopping]")9 public FluentWebElement continueShoppingButton;10 @FindBy(css = "[data-automation=quantity] input")11 public FluentWebElement quantity;12 public AddToCartConfirmation(WebElement element, FluentControl control, ComponentInstantiator instantiator) {13 super(element, control, instantiator);14 }15}...

Full Screen

Full Screen

Source:BasicModule.java Github

copy

Full Screen

1package Modules;2import org.fluentlenium.core.FluentControl;3import org.fluentlenium.core.components.ComponentInstantiator;4import org.fluentlenium.core.domain.FluentList;5import org.fluentlenium.core.domain.FluentWebElement;6import org.openqa.selenium.Keys;7import org.openqa.selenium.WebElement;8import static org.fluentlenium.core.filter.FilterConstructor.withClass;9import static org.fluentlenium.core.filter.FilterConstructor.withText;10public class BasicModule extends FluentWebElement11{12 public BasicModule(WebElement element, FluentControl control, ComponentInstantiator instantiator)13 {14 super(element, control, instantiator);15 }16}...

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1import org.fluentlenium.core.domain.FluentWebElement;2import org.fluentlenium.core.components.Component;3import org.fluentlenium.core.components.ComponentInstantiator;4public class 4 extends FluentTest {5 public void test() {6 FluentWebElement fluentWebElement = new FluentWebElement();7 ComponentInstantiator componentInstantiator = new ComponentInstantiator();8 Component component = new Component(fluentWebElement, componentInstantiator);9 WebElement webElement = component.getElement();10 }11}

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1public class 4 extends FluentTest {2 public WebDriver newWebDriver() {3 return new HtmlUnitDriver();4 }5 public void test() {6 Component searchBox = find(".gsfi");7 searchBox.fill().with("FluentLenium");8 searchBox.submit();9 await().atMost(10, TimeUnit.SECONDS).untilPage().isLoaded();10 assertThat(title()).contains("FluentLenium");11 }12}13public class 5 extends FluentTest {14 public WebDriver newWebDriver() {15 return new HtmlUnitDriver();16 }17 public void test() {18 FluentWebElement searchBox = find(".gsfi");19 searchBox.fill().with("FluentLenium");20 searchBox.submit();21 await().atMost(10, TimeUnit.SECONDS).untilPage().isLoaded();22 assertThat(title()).contains("FluentLenium");23 }24}25public class 6 extends FluentTest {26 public WebDriver newWebDriver() {27 return new HtmlUnitDriver();28 }29 public void test() {30 FluentList<FluentWebElement> searchBox = find(".gsfi");31 searchBox.fill().with("FluentLenium");32 searchBox.submit();33 await().atMost(10, TimeUnit.SECONDS).untilPage().isLoaded();34 assertThat(title()).contains("FluentLenium");35 }36}37public class 7 extends FluentTest {38 public WebDriver newWebDriver() {39 return new HtmlUnitDriver();40 }41 public void test() {42 FluentControl searchBox = find(".gsfi");43 searchBox.fill().with("FluentLenium");44 searchBox.submit();45 await().atMost(10, TimeUnit.SECONDS).untilPage().isLoaded();46 assertThat(title()).contains("FluentLenium");

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1package org.fluentlenium.core.domain;2import org.openqa.selenium.WebElement;3public class Component extends FluentWebElement {4 public Component(WebElement webElement, FluentControl fluentControl) {5 super(webElement, fluentControl);6 }7}8package org.fluentlenium.core.domain;9import org.openqa.selenium.WebElement;10public class FluentWebElement extends FluentWebElementImpl {11 public FluentWebElement(WebElement webElement, FluentControl fluentControl) {12 super(webElement, fluentControl);13 }14}15package org.fluentlenium.core.domain;16import org.openqa.selenium.WebElement;17public class FluentWebElementImpl implements FluentWebElement {18 public FluentWebElementImpl(WebElement webElement, FluentControl fluentControl) {19 }20}21package org.fluentlenium.core.domain;22public interface FluentWebElement {23}24package org.fluentlenium.core.domain;25public class FluentControl {26}27package org.fluentlenium.core.domain;28public interface FluentControl {29}30package org.openqa.selenium;31public interface WebElement {32}33package org.openqa.selenium;34public interface WebDriver {35}36package org.openqa.selenium;37public class WebDriverException extends RuntimeException {38 public WebDriverException(String message) {39 }40}41package org.openqa.selenium;42public interface WebDriverException {43}44package org.openqa.selenium;45public class By {46}47package org.openqa.selenium;48public interface By {49}50package org.openqa.selenium.support.ui;51public class ExpectedConditions {52}53package org.openqa.selenium.support.ui;54public interface ExpectedConditions {55}56package org.openqa.selenium.support.ui;

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1import org.fluentlenium.adapter.FluentTest;2import org.openqa.selenium.WebDriver;3import org.openqa.selenium.firefox.FirefoxDriver;4import org.openqa.selenium.remote.DesiredCapabilities;5import org.testng.annotations.Test;6import org.fluentlenium.core.domain.FluentWebElement;7import org.fluentlenium.core.domain.FluentList;8import org.fluentlenium.core.domain.FluentWindow;9import org.fluentlenium.core.domain.FluentAlert;10import org.fluentlenium.core.domain.FluentFrame;11import org.fluentlenium.core.domain.FluentSelect;12import org.fluentlenium.core.domain.FluentListImpl;13import org.fluentlenium.core.domain.FluentWebElementImpl;14import org.fluentlenium.core.domain.FluentWindowImpl;15public class 4 extends FluentTest {16 public WebDriver getDefaultDriver() {17 DesiredCapabilities capabilities = DesiredCapabilities.firefox();18 capabilities.setCapability("marionette", true);19 return new FirefoxDriver(capabilities);20 }21 public void test() {22 find("#lst-ib").fill().with("FluentLenium");23 find("#tsbb").click();24 find(".r a").click();25 FluentWebElement element = find(".r a").first();26 FluentWebElement element2 = find(".r a").get(1);27 FluentList<FluentWebElement> elements = find(".r a");28 int nbElements = find(".r a").size();29 String text = find(".r a").first().text();30 String text2 = find(".r a").get(1).text();31 FluentList<String> texts = find(".r a").texts();32 int nbTexts = find(".r a").texts().size();33 String value = find(".r a").first().value();

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1package org.fluentlenium.core.domain;2import org.openqa.selenium.WebElement;3public class Component extends FluentWebElement {4public Component(WebElement element, FluentDriver driver) {5 super(element, driver);6}7public Component(WebElement element, FluentDriver driver, String name) {8 super(element, driver, name);9}10}11package org.fluentlenium.core.domain;12import org.openqa.selenium.WebElement;13public class FluentWebElement {14public FluentWebElement(WebElement element, FluentDriver driver) {15}16public FluentWebElement(WebElement element, FluentDriver driver, String name) {17}18}19package org.fluentlenium.core.domain;20import java.util.List;21public class FluentList<T extends FluentWebElement> extends FluentListImpl<T> {22public FluentList(FluentDriver driver, List<T> elements, String name) {23 super(driver, elements, name);24}25}26package org.fluentlenium.core.domain;27import java.util.List;28public class FluentListImpl<T extends FluentWebElement> extends FluentListBase<T> {29public FluentListImpl(FluentDriver driver, List<T> elements, String name) {30 super(driver, elements, name);31}32}33package org.fluentlenium.core.domain;34import java.util.List;35public abstract class FluentListBase<T extends FluentWebElement> extends FluentListAbstract<T> {36public FluentListBase(FluentDriver driver, List<T> elements, String name) {37 super(driver, elements, name);38}39}40package org.fluentlenium.core.domain;41import java.util.List;42public abstract class FluentListAbstract<T extends FluentWebElement> extends FluentListCore<T> {43public FluentListAbstract(FluentDriver driver, List<T> elements, String name) {44 super(driver, elements, name);45}46}

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1import org.fluentlenium.core.domain.*;2import org.junit.*;3import org.openqa.selenium.*;4import org.openqa.selenium.support.*;5import org.openqa.selenium.support.ui.*;6import static org.junit.Assert.*;7import static org.hamcrest.CoreMatchers.*;8import java.util.*;9import java.util.concurrent.TimeUnit;10import org.openqa.selenium.support.ui.Select;11import org.openqa.selenium.support.ui.WebDriverWait;12import org.openqa.selenium.support.ui.ExpectedConditions;13import org.openqa.selenium.support.ui.ExpectedCondition;14public class 4 extends FluentTest {15 public WebDriver getDefaultDriver() {16 return new HtmlUnitDriver();17 }18 public void test() {19 assertThat(window().title(), is("Google"));20 window().maximize();21 assertThat(window().size(), is(new Dimension(1024, 768)));22 assertThat(window().position(), is(new Point(0, 0)));23 window().fullscreen();24 window().setPosition(new Point(0, 0));25 window().setSize(new Dimension(1024, 768));26 assertThat(window().position(), is(new Point(0, 0)));27 assertThat(window().size(), is(new Dimension(1024, 768)));28 window().restore();29 assertThat(window().position(), is(new Point(0, 0)));30 assertThat(window().size(), is(new Dimension(1024, 768)));31 window().refresh();32 window().back();33 window().forward();34 window().close();35 }36}37import org.fluentlenium.core.domain.*;38import org.junit.*;39import org.openqa.selenium.*;40import org.openqa.selenium.support.*;41import org.openqa.selenium.support.ui.*;42import static org.junit.Assert.*;43import static org.hamcrest.CoreMatchers.*;44import java.util.*;45import java.util.concurrent.TimeUnit;46import org.openqa.selenium.support.ui.Select;47import org.openqa.selenium.support.ui.WebDriverWait;48import org.openqa.selenium.support.ui.ExpectedConditions;49import org.openqa.selenium.support.ui.ExpectedCondition;50public class 5 extends FluentTest {51 public WebDriver getDefaultDriver() {52 return new HtmlUnitDriver();53 }54 public void test() {55 assertThat(window().title(), is("Google"));56 window().maximize();57 assertThat(window().size(), is(new Dimension(1024,

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1package org.fluentlenium.core.domain;2import org.openqa.selenium.By;3import org.openqa.selenium.WebElement;4import java.util.List;5public interface Component {6 WebElement getElement();7 WebElement getElement(By selector);8 WebElement getElement(String selector);9 WebElement getElement(String selector, Object... params);10 WebElement getElement(By selector, Object... params);11 List<WebElement> getElements();12 List<WebElement> getElements(By selector);13 List<WebElement> getElements(String selector);14 List<WebElement> getElements(String selector, Object... params);15 List<WebElement> getElements(By selector, Object... params);16 boolean hasElement();17 boolean hasElement(By selector);18 boolean hasElement(String selector);19 boolean hasElement(String selector, Object... params);20 boolean hasElement(By selector, Object... params);21 boolean hasElements();22 boolean hasElements(By selector);23 boolean hasElements(String selector);24 boolean hasElements(String selector, Object... params);25 boolean hasElements(By selector, Object... params);26 boolean hasNotElement();27 boolean hasNotElement(By selector);28 boolean hasNotElement(String selector);29 boolean hasNotElement(String selector, Object... params);30 boolean hasNotElement(By selector, Object... params);31 boolean hasNotElements();32 boolean hasNotElements(By selector);33 boolean hasNotElements(String selector);34 boolean hasNotElements(String selector, Object... params);35 boolean hasNotElements(By selector, Object

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1package com.selenium.maven;2import static org.assertj.core.api.Assertions.assertThat;3import static org.fluentlenium.core.filter.FilterConstructor.withText;4import org.fluentlenium.adapter.FluentTest;5import org.fluentlenium.core.annotation.Page;6import org.fluentlenium.core.domain.FluentWebElement;7import org.junit.Test;8import org.junit.runner.RunWith;9import org.openqa.selenium.WebDriver;10import org.openqa.selenium.htmlunit.HtmlUnitDriver;11import org.openqa.selenium.support.FindBy;12import org.springframework.beans.factory.annotation.Autowired;13import org.springframework.boot.test.context.SpringBootTest;14import org.springframework.test.annotation.DirtiesContext;15import org.springframework.test.context.junit4.SpringRunner;16import com.selenium.maven.pages.HomePage;17import com.selenium.maven.pages.LoginPage;18@RunWith(SpringRunner.class)19@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)20public class SeleniumTest extends FluentTest {21 private LoginPage loginPage;22 private HomePage homePage;23 private WebDriver webDriver;24 public WebDriver getDefaultDriver() {25 return webDriver;26 }27 public void testLogin() {28 goTo(loginPage);29 loginPage.isAt();30 loginPage.login("admin", "admin");31 homePage.isAt();32 }33 public void testLoginFail() {34 goTo(loginPage);35 loginPage.isAt();36 loginPage.login("admin", "wrong");37 loginPage.isAt();38 }39 public void testLogout() {40 goTo(loginPage);41 loginPage.isAt();42 loginPage.login("admin", "admin");43 homePage.isAt();44 homePage.logout();45 loginPage.isAt();46 }47 public void testCreateNewUser() {48 goTo(loginPage);49 loginPage.isAt();50 loginPage.login("admin", "admin");51 homePage.isAt();52 homePage.clickUserMenu();53 homePage.clickNewUser();54 homePage.fillNewUserForm("user1", "user1", "user1", "user1", "

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1import org.fluentlenium.core.domain.*;2import org.fluentlenium.core.annotation.Page;3import org.fluentlenium.core.FluentPage;4import org.openqa.selenium.WebDriver;5import org.fluentlenium.core.Fluent;6import org.fluentlenium.core.FluentAdapter;7import org.openqa.selenium.chrome.ChromeDriver;8import org.openqa.selenium.chrome.ChromeOptions;9import org.openqa.selenium.chrome.ChromeDriverService;10import org.openqa.selenium.By;11import org.fluentlenium.core.filter.FilterConstructor;12import org.fluentlenium.core.filter.Filter;13import org.openqa.selenium.WebElement;14import org.openqa.selenium.support.FindBy;15import org.openqa.selenium.support.How;16import org.openqa.selenium.support.PageFactory;17import org.openqa.selenium.support.ui.ExpectedConditions;18import org.openqa.selenium.support.ui.WebDriverWait;19import org.openqa.selenium.support.ui.Select;20import org.openqa.selenium.JavascriptExecutor;21import org.openqa.selenium.interactions.Actions;22public class 4 extends FluentPage {23 public String getUrl() {24 }25 public void isAt() {26 assertThat(window().title()).contains("Online Shopping site in India: Shop Online for Mobiles, Books, Watches, Shoes and More - Amazon.in");27 }28 public void login() {29 await().atMost(5, TimeUnit.SECONDS).until("#30package org.fluentlenium.core.domain;31import org.openqa.selenium.By;32import org.openqa.selenium.WebElement;33import java.util.List;34public interface Component {35 WebElement getElement();36 WebElement getElement(By selector);37 WebElement getElement(String selector);38 WebElement getElement(String selector, Object... params);39 WebElement getElement(By selector, Object... params);40 List<WebElement> getElements();41 List<WebElement> getElements(By selector);42 List<WebElement> getElements(String selector);43 List<WebElement> getElements(String selector, Object... params);44 List<WebElement> getElements(By selector, Object... params);45 boolean hasElement();46 boolean hasElement(By selector);47 boolean hasElement(String selector);48 boolean hasElement(String selector, Object... params);49 boolean hasElement(By selector, Object... params);50 boolean hasElements();51 boolean hasElements(By selector);52 boolean hasElements(String selector);53 boolean hasElements(String selector, Object... params);54 boolean hasElements(By selector, Object... params);55 boolean hasNotElement();56 boolean hasNotElement(By selector);57 boolean hasNotElement(String selector);58 boolean hasNotElement(String selector, Object... params);59 boolean hasNotElement(By selector, Object... params);60 boolean hasNotElements();61 boolean hasNotElements(By selector);62 boolean hasNotElements(String selector);63 boolean hasNotElements(String selector, Object... params);64 boolean hasNotElements(By selector, Object

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1import org.fluentlenium.core.domain.*;2import org.junit.*;3import org.openqa.selenium.*;4import org.openqa.selenium.support.*;5import org.openqa.selenium.support.ui.*;6import static org.junit.Assert.*;7import static org.hamcrest.CoreMatchers.*;8import java.util.*;9import java.util.concurrent.TimeUnit;10import org.openqa.selenium.support.ui.Select;11import org.openqa.selenium.support.ui.WebDriverWait;12import org.openqa.selenium.support.ui.ExpectedConditions;13import org.openqa.selenium.support.ui.ExpectedCondition;14public class 4 extends FluentTest {15 public WebDriver getDefaultDriver() {16 return new HtmlUnitDriver();17 }18 public void test() {19 assertThat(window().title(), is("Google"));20 window().maximize();21 assertThat(window().size(), is(new Dimension(1024, 768)));22 assertThat(window().position(), is(new Point(0, 0)));23 window().fullscreen();24 window().setPosition(new Point(0, 0));25 window().setSize(new Dimension(1024, 768));26 assertThat(window().position(), is(new Point(0, 0)));27 assertThat(window().size(), is(new Dimension(1024, 768)));28 window().restore();29 assertThat(window().position(), is(new Point(0, 0)));30 assertThat(window().size(), is(new Dimension(1024, 768)));31 window().refresh();32 window().back();33 window().forward();34 window().close();35 }36}37import org.fluentlenium.core.domain.*;38import org.junit.*;39import org.openqa.selenium.*;40import org.openqa.selenium.support.*;41import org.openqa.selenium.support.ui.*;42import static org.junit.Assert.*;43import static org.hamcrest.CoreMatchers.*;44import java.util.*;45import java.util.concurrent.TimeUnit;46import org.openqa.selenium.support.ui.Select;47import org.openqa.selenium.support.ui.WebDriverWait;48import org.openqa.selenium.support.ui.ExpectedConditions;49import org.openqa.selenium.support.ui.ExpectedCondition;50public class 5 extends FluentTest {51 public WebDriver getDefaultDriver() {52 return new HtmlUnitDriver();53 }54 public void test() {55 assertThat(window().title(), is("Google"));56 window().maximize();57 assertThat(window().size(), is(new Dimension(1024,

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1package org.fluentlenium.core.domain;2import org.openqa.selenium.By;3import org.openqa.selenium.WebElement;4import java.util.List;5public interface Component {6 WebElement getElement();7 WebElement getElement(By selector);8 WebElement getElement(String selector);9 WebElement getElement(String selector, Object... params);10 WebElement getElement(By selector, Object... params);11 List<WebElement> getElements();12 List<WebElement> getElements(By selector);13 List<WebElement> getElements(String selector);14 List<WebElement> getElements(String selector, Object... params);15 List<WebElement> getElements(By selector, Object... params);16 boolean hasElement();17 boolean hasElement(By selector);18 boolean hasElement(String selector);19 boolean hasElement(String selector, Object... params);20 boolean hasElement(By selector, Object... params);21 boolean hasElements();22 boolean hasElements(By selector);23 boolean hasElements(String selector);24 boolean hasElements(String selector, Object... params);25 boolean hasElements(By selector, Object... params);26 boolean hasNotElement();27 boolean hasNotElement(By selector);28 boolean hasNotElement(String selector);29 boolean hasNotElement(String selector, Object... params);30 boolean hasNotElement(By selector, Object... params);31 boolean hasNotElements();32 boolean hasNotElements(By selector);33 boolean hasNotElements(String selector);34 boolean hasNotElements(String selector, Object... params);35 boolean hasNotElements(By selector, Object

Full Screen

Full Screen

Component

Using AI Code Generation

copy

Full Screen

1package com.selenium.maven;2import static org.assertj.core.api.Assertions.assertThat;3import static org.fluentlenium.core.filter.FilterConstructor.withText;4import org.fluentlenium.adapter.FluentTest;5import org.fluentlenium.core.annotation.Page;6import org.fluentlenium.core.domain.FluentWebElement;7import org.junit.Test;8import org.junit.runner.RunWith;9import org.openqa.selenium.WebDriver;10import org.openqa.selenium.htmlunit.HtmlUnitDriver;11import org.openqa.selenium.support.FindBy;12import org.springframework.beans.factory.annotation.Autowired;13import org.springframework.boot.test.context.SpringBootTest;14import org.springframework.test.annotation.DirtiesContext;15import org.springframework.test.context.junit4.SpringRunner;16import com.selenium.maven.pages.HomePage;17import com.selenium.maven.pages.LoginPage;18@RunWith(SpringRunner.class)19@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)20public class SeleniumTest extends FluentTest {21 private LoginPage loginPage;22 private HomePage homePage;23 private WebDriver webDriver;24 public WebDriver getDefaultDriver() {25 return webDriver;26 }27 public void testLogin() {28 goTo(loginPage);29 loginPage.isAt();30 loginPage.login("admin", "admin");31 homePage.isAt();32 }33 public void testLoginFail() {34 goTo(loginPage);35 loginPage.isAt();36 loginPage.login("admin", "wrong");37 loginPage.isAt();38 }39 public void testLogout() {40 goTo(loginPage);41 loginPage.isAt();42 loginPage.login("admin", "admin");43 homePage.isAt();44 homePage.logout();45 loginPage.isAt();46 }47 public void testCreateNewUser() {48 goTo(loginPage);49 loginPage.isAt();50 loginPage.login("admin", "admin");51 homePage.isAt();52 homePage.clickUserMenu();53 homePage.clickNewUser();54 homePage.fillNewUserForm("user1", "user1", "user1", "user1", "

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run FluentLenium automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used methods in Component

Test Your Web Or Mobile Apps On 3000+ Browsers

Signup for free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful