Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Прогон тестовых наборов под разными ролевыми моделями пользователей



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Прогон тестовых наборов под разными ролевыми моделями пользователей
2018-05-04 17:45

Здравствуйте, коллеги!

 

Пытаюсь автоматизировать веб-приложение с помощью Selenium WebDriver + Pytest.

 

Проблема такая: в проекте имеется несколько различных ролевых моделей пользователей (например, админ, модератор, пользователь и тд), которым, соответственно, доступен различный функционал. Авторизация выполняется при инициализации браузера. Однако такая архитектура предполагает прогон теста только под одной ролевой моделью (например, админом), для прогона под другой ролевой моделью (например, модератором) нужно вручную менять данные для авторизации, что в условиях запуска и прогона тестов на CI становится невозможным.

 

С другой стороны, можно было бы выполнять авторизацию (или проверку на то, что авторизован нужный пользователь) в каждом тестовом наборе, но копипастить код также выглядит не очень изящным решением, так как разные фичи бывают доступны разным ролевым моделям (например, и админ, и модератор могут создавать обычного пользователя). Соответственно, какие то тесты должны прогоняться для каких-то отдельных ролей, а какие-то для нескольких ролей сразу.

 

Вот, собственно, и вопрос, подскажите, как можно более толково разграничить прогоны тестов под разными ролями? Выполнять их последовательно или параллельно в разных окнах - особого значения не имеет.

 

Вот реализация авторизации (данные для авторизации берутся из файла):


fixture = None

@pytest.fixture
def driver(request, data_login):
    global fixture
    # проверка браузера и инициализация
    if fixture is None:
        fixture = Application()
    else:
        if not fixture.is_valid():
            fixture = Application()
    # проверка авторизации пользователя и авторизация 
    fixture.session.open_page()
    fixture.session.ensure_login(data_login)
    return fixture 


Right Click() выбранного объекта
2018-05-05 12:42

Камрады!

 

Не получается реализовать работающий метод нажатие правой кнопки мышки.после наведения на элемент

 

Метод нажатия:

 

 

@Step(description = "Right click")
public static void RightClick(WebDriver driver, By targetXpath)
{
WebElement element = driver.findElement(targetXpath);
Actions action = new Actions(driver);
action.contextClick(element).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).perform();

}

 

Метод наведения

 

 

@Step(description = "Mouse Hover to target")
public static void mouseHover(WebDriver driver, WebElement element) {
Actions action = new Actions(driver);
action.moveToElement(element).perform();

}

 

В главном теле программы:

 

        String xpath = String.format(<xpath to element>);

        By deviceXpath = By.xpath(xpath);
        WebElement deviceElement = driver.findElement(deviceXpath);
        waitForElementToBeVisible(deviceXpath);
 
        CommonWebSteps.mouseHover(driver, deviceElement);
        CommonWebSteps.RightClick(driver, deviceXpath);

 

В результате, мышка наводится на элемент, но никакого Right Click() не происходит...

 

Должно быть выпадающее под-меню вот так 

ScreenHunter_193 May. 05 12.42.jpg

 

Исполнение не падает, просто ничего не происходит...

 

 



При аутентификации в почте есть форма &#34;Я не робот&#34;
2018-05-06 16:15

Привет всем. Подскажите кто разбирается.

 

Пытаюсь написать автотест: открыть браузер, открыть почту, ввести логин/пароль, войти, убедиться что вошёл в почтовый ящик. Кусок кода:

// Ввожу логин:
WebElement loginField = driver.findElement(By.id("Login"));
loginField.sendKeys("vasya_pupkin");

// Ввожу пароль:
WebElement passwordField = driver.findElement(By.id("Pswd"));
passwordField.sendKeys("qwerty12345");

// Жму кнопку Войти:
WebElement loginButton = driver.findElement(By.cssSelector(".button__content"));
loginButton.click();

// Убеждаюсь что попал в свой почтовый ящик:
WebElement profileUser = driver.findElement(By.cssSelector(".login-button__user"));
String mailUser = profileUser.getText();
Assert.assertEquals("vasya_pupkin@mail.ru", mailUser);

Но я не могу разобраться: там перед тем как войти надо поставить галку "Я не робот" и потом выбрать какие-нибудь картинки (например картинки где изображен дорожный знак). А так как в тесте я это не отразил то на странице авторизации появляется сообщение "Пройдите проверку Я не робот", а сам тест падает. Как это в коде изобразить?

 

Скриншот приложил.

 

Прикрепленные изображения

  • кнопка я не робот.jpg


Использовать созданный ранее объект WebDriver
2018-05-06 17:36

Можно ли использовать уже существующий объект Selenium WebDriver? Я имею в виду следующее: в первом тесте я создаю этот объект, а по его окончанию не закрываю и не уничтожаю. После окончания теста процесс продолжает оставаться в памяти. Через какое-то время у меня возникает потребность запустить другой тест, в котором используется тот же URL. Могу ли я каким-то образом в этом новом тесте использовать старый объект драйвера, активировать существующее окно браузера и выполнить в нем новый тест?



© 2010 | Software-Testing.Ru


В избранное