Вы должны вернуть объект класса SearchResultTab из класса поиска, который инициализирует элементы вложенных вкладок. Попробуйте код ниже. Пожалуйста, прочитайте код, над которым написан комментарий в классе поиска.
public class Search {
private WebDriver driver;
@FindBy(css=".LM6RPg")
private WebElement searchTextBox;
@FindBy(css = ".vh79eN")
private WebElement searchButton;
public Search(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
// A method which initializes tab page on submitting search page
public SearchResults searchInStore(String query) {
searchTextBox.sendKeys(query + Keys.SPACE);
searchButton.click();
return new SearchTab(driver, query);
}
}
public class SearchTab {
@FindBy(css="._1ZODb3")
public WebElement tabElement1;
@FindBy(how = How.XPATH, using = "//div[@class='_3wU53n']")
public List<WebElement> tabElement2;
public SearchResults(WebDriver driver, String query) {
this.driver = driver;
PageFactory.initElements(driver, this);
wait = new WebDriverWait(this.driver,2000);
}
}
public class SearchTabTest{
@Test
public void testProductSearch() {
Search search = new Search(Browser.driver);
SearchResults searchResults = search.Search().searchInStore("iphone 5s");
searchResults.tabElement1.getText();
searchResults.tabElement2.getText();
}
}
public class Browser {
private static WebDriver driver;
public static WebDriver driver() {
System.setProperty("webdriver.chrome.driver", "./resources/browserdrivers/chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
caps.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(caps);
driver.manage().window().maximize();
return driver;
}
public static void open(String url) {
driver.get(url);
}
public static void close() {
driver.quit();
}
}