Как передать экземпляр драйвера через несколько вложенных вкладок на странице с помощью Selenium? - PullRequest
0 голосов
/ 02 сентября 2018

Я новичок в Salesforce. Я пытаюсь сделать автоматизацию на странице Salesforce (Lightning Experience). Страница, на которой я сейчас работаю, имеет следующий дизайн:

  1. Поле поиска вверху страницы
  2. Результаты поиска в виде вложенных вкладок на той же странице

Как передать экземпляр драйвера текущей отображаемой вложенной вкладке той же страницы?

В настоящее время, когда я пытаюсь получить доступ к элементам страницы недавно открытой вложенной вкладки, возникает исключение, поскольку драйвер все еще удерживается на первой открытой вкладке и извлекает ее элементы.

1 Ответ

0 голосов
/ 02 сентября 2018

Вы должны вернуть объект класса 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...