Перейти к содержимому

Публикации Raindrops

22 публикаций создано Raindrops (учитываются публикации только с 26 апреля 2023)


#167933 Test Suite как указать "далее запустить все остальные тесты"?

Отправлено автор: Raindrops 22 августа 2018 - 09:54 в Автоматизированное тестирование

Мне кажется тут сейчас выдумывается велосипед.

Если я хочу последовательно ранить только несколько тестов - то ставлю аннотацию перед методом.

А вашем случае советую просто разделить тесты на 2 сьюта, первый будет иметь только 1 поток, а значит всегда запускаться последовательно, а остальные уже в потоках запускайте. 

Может быть подскажете как при такой конструкции, как у автора, запускать тест сьюты параллельно? 




#166741 Статический WebDriver и PageFactory

Отправлено автор: Raindrops 21 июня 2018 - 15:05 в Selenium - Functional Testing

Структура выглядела примерно так:

"Фабрика"

 

public class Factory{
WebDriver webDriver;

public Factory(WebDriver driver){
webDriver = driver;
}
public LoginPage loginPage (){
return new LoginPage(webDriver);
    }
}

 

Фабричная страница

 

public class LoginPage {
private WebDriver webDriver;

public LoginPage(WebDriver driver){
webDriver = driver;
PageFactory.initElements(webDriver, this);
    }
}

 

 

И, собсна, сами тесты

 

public class Tests {
WebDriver webDriver;
Factory factory;

@Before
public void preCondition(){
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
webDriver = new ChromeDriver();
factory = new Factory(webDriver);;
}
@Test
public void test(){
factory.loginpage.element.click();
}

 

 

Но вдруг понадобилось использовать статический @Beforeclass и схема начала сыпаться. Своего ума хватило только на это:

Собсна фабричный класс:

 

public class Factory {
static WebDriver webDriver;
public Factory (WebDriver driver){
webDriver = driver;
}
public LoginPage loginPage(){
return new LoginPage(webDriver);
    }
}


public class LoginPage {
WebDriver webDriver;

public LoginPage(WebDriver driver) {
webDriver = driver;
PageFactory.initElements(TestClass.webDriver, this);
    }
}

 

 

И, собсна, NullPointException:

 

public class Test {
@BeforeClass
public static void setupClass() {
System.setProperty("chromedriver.exe");
webDriver = new ChromeDriver();
}
@Test
public void add(){
factory.loginPage().PasswordField.click();
    }
}

 

Помогите идиоту правильно инициализировать webDriver




#165501 Запуск Selenium тестов на облочном сервере

Отправлено автор: Raindrops 02 апреля 2018 - 11:54 в Автоматизированное тестирование

Недавно встал вопрос о том, как запустить свои авто-тесты (selenium + java + junit) на VPS. Но вот уже два дня кури эти ваши интернеты, но ничего похожего на туториал не нашел. Только какие-то отрывки, да и стэк используемого отличался. 
Может быть кто-то с опытом подскажет как это все провернуть? 




#165394 Selenium WebDriver vs WebDriver io

Отправлено автор: Raindrops 25 марта 2018 - 10:02 в Автоматизированное тестирование

Просто хотел бы узнать все "за" и "против" от тех, кто их использует. Буду рад любой информации и точке зрения




#165218 Drag & Drop Selenium WebDriver + java

Отправлено автор: Raindrops 12 марта 2018 - 17:37 в Selenium - Functional Testing

Пробовал следующее:

 

Actions builder = new Actions(driver);
builder.keyDown(Keys.CONTROL)
.click(element1)
.click(element2)
.keyUp(Keys.CONTROL);

Action selectMultiple = builder.build();
selectMultiple.perform();

 

и

 

Actions builder = new Actions(driver);
Action dragAndDrop = builder.clickAndHold(element1)
.moveToElement(element2)
.release(element2)
.build();

dragAndDrop.perform();

 

а так же

 

WebElement element = driver.findElement(By.name("element1"));
WebElement target = driver.findElement(By.name("element2"));
(new Actions(driver)).dragAndDrop(element, target).perform();

 

 

Смещать мышь по осям на (1, 1) так же пробовал. Ничего из этого не помогло. ChromeDriverвообще поддерживает это действие? Если да, то может есть варианты как это еще можно реализовать?
Chrome последней версии, драйвер 2.36.

Тестировал как на реальном проекте, так и тут. Эффект нулевой. Тест проходит успешно, однако элементы остаются на месте. Буду рад любой информации.




#165078 Параллельный запуск junit тестов с Maven

Отправлено автор: Raindrops 28 февраля 2018 - 15:44 в Автоматизированное тестирование

Если с атрибутом <parallel>methods</parallel> все ясно, он просто запускает параллельно все методы с аннотацией @Test.

То как запустить параллельно группу тестов?

То есть, к примеру, есть 2 класса с тестами, со соледующей конструкцией.

@Before
@Test
@Test
@Test
@After

 

Могу ли я запустить параллельное выполнение этих классов?




#165035 Отчет о тестировании allure+maven+junit

Отправлено автор: Raindrops 26 февраля 2018 - 20:13 в Автоматизированное тестирование

Подскажите, пожалуйста. Как должен выглядеть pom.xml для составления отчетов о результатах тестировании с использованием allure + maven + junit

 

 

 




#165031 WebDriver, всплывающая подсказка

Отправлено автор: Raindrops 26 февраля 2018 - 17:13 в Автоматизированное тестирование

Потому что этого в странице нет. Подсказку выводит браузер, на основе того, что это поле type="email". Поэтому проверять подобное не имеет смысла.

 

А вот подсказка на пустое поле в данном случае реализована именно на сайте.

Но что бы браузер эту подсказку отображал. Это ведь как-то нужно прикрутить/настроить? И если цель таки стоит в том, что бы наличие этой подсказке проверялось в assert. То как быть? 




#165022 WebDriver, всплывающая подсказка

Отправлено автор: Raindrops 26 февраля 2018 - 12:05 в Автоматизированное тестирование

При вводе в поле e-mail чего-то вроде "абв" - появляется всплывающая подсказка, которая исчезает при клике по ней. Как можно ее отловить? В ресурсах страницы ничего подходящего не нашел.

Собственно, вот форма https://app.heroicnow.com/login/

Как в selenium webdriver указать ее появление в asset?




#164979 Selenium Webdriver + java на Mac OC

Отправлено автор: Raindrops 24 февраля 2018 - 12:35 в Selenium - Functional Testing

Доброго времени суток. В windows среду для тестирования я настраивал следующим образом
->    https://www.swtestac...ial-java-junit/
Подскажите пожалуйста, настройка под яблоко будет выглядеть так же? Если нет - не могли бы Вы указать на ключевые отличия, или поделиться гайдом? 




#164857 Запуск тестов из консоли Selenium WebDriver

Отправлено автор: Raindrops 16 февраля 2018 - 11:51 в Автоматизированное тестирование

Кому интересно. В моем файл pom.xml не хватало следующей конструкции:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

После этого в консоли нужно перейти в папку с файлом pom.xml и запустить тесты командой  mvn clean install test




#164856 Запуск тестов из консоли Selenium WebDriver

Отправлено автор: Raindrops 16 февраля 2018 - 11:21 в Автоматизированное тестирование

Вот, собственно, небольшой проект из трех тестов в Selenium WebDriver+JUnit. 

 

https://github.com/R...master/beheroik

 

Проект создавался через maven.

Встал вопрос о том как все это дело запустить через консоль. До этого ничего похожего делать не приходилось, так что я даже не представляю с чего начать. Буду благодарен за помощь. 




#164248 Selenium для нескольких браузеров

Отправлено автор: Raindrops 31 декабря 2017 - 17:27 в Selenium - Functional Testing

 

Доброго времени суток. Недавно начал знакомство с Selenium WebDriver, написал некоторое количество тестов для chrome и тут возник вполне закономерный вопрос. Как запустить эти тесты для других браузеров? Или в нескольких сразу? Как это реализовать без копипаста кода или тупо замены драйвера при каждом новом прогоне кода?

Вы не написали, что за система. Как вариант сделать несколько конфигов с разными браузерами и запускать их. К примеру, на C# я писал функцию, которая смотрела один конфиг и указанные в нем браузеры и параллельно запускала тесты в них.

 

Selenium WebDriver + java




#164246 Selenium для нескольких браузеров

Отправлено автор: Raindrops 30 декабря 2017 - 22:55 в Selenium - Functional Testing

 

 

browserstack?

 

Не совсем то что надо. Допустим, нужно протестировать в 3 браузерах. С одним все ясно. Достаточно просто прописать нечто подобное в @Before

 System.setProperty("webdriver.chrome.driver", "C:\\Maven\\chromedriver.exe");
 WebDriver driver = new ChromeDriver();

Но как сделать так, что бы после прогона в 1 браузере, тесты начинали прогоняться в следующем, или же делали это параллельно? 




#164244 Selenium для нескольких браузеров

Отправлено автор: Raindrops 30 декабря 2017 - 19:10 в Selenium - Functional Testing

Доброго времени суток. Недавно начал знакомство с Selenium WebDriver, написал некоторое количество тестов для chrome и тут возник вполне закономерный вопрос. Как запустить эти тесты для других браузеров? Или в нескольких сразу? Как это реализовать без копипаста кода или тупо замены драйвера при каждом новом прогоне кода?




#164152 if-циклы при выполнении теста

Отправлено автор: Raindrops 22 декабря 2017 - 09:21 в Selenium - Functional Testing

 

 

 

Примерно так, при желании можно еще ID добавить.

 

XPath

//li[contains(@class,'m-wrng')]
//li[contains(@class,'m-corr')]

CSS

li[class*='m-wrng']
li[class*='m-corr']

Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){

     //делай это.

}

else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
     //сделай так.
}

 

В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит

 

Все правильно, падает потому что не находит элемент.

Я бы в вашем случае получал элемент по id, насколько видно из примера он одинаковый для обоих случаев. А потом получал бы атрибут и проверял его в if.

Подозреваю, что я понял Вас не верно, потому что снова написал что-то не рабочее

if(webDriver.findElement(By.id("result-panel")).getAttribute("//li[contains(@class,'m-corr')]"){
System.out.println("True");
}
else if(webDriver.findElement(By.id("result-panel")).findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
System.out.println("False");
}

Не могли бы Вы показать что имели ввиду? 




#164151 if-циклы при выполнении теста

Отправлено автор: Raindrops 22 декабря 2017 - 09:19 в Selenium - Functional Testing

вообще тест не должен содержать таких условий

 

получается что тест прогоняет только один вариант из двух, чуть ли не рандомно?

Есть некий тест (экзамен), в котором после ответа может отображаться либо True, либо False. Вот мой @Test и вводит рандомные ответы, дожидается появления обоих состояний (True и False) и завершает работу.




#164150 if-циклы при выполнении теста

Отправлено автор: Raindrops 22 декабря 2017 - 09:13 в Selenium - Functional Testing


Все правильно, падает потому что не находит элемент.

Я бы в вашем случае получал элемент по id, насколько видно из примера он одинаковый для обоих случаев. А потом получал бы атрибут и проверял его в if.

 

То есть примерно так?

 

 

Поправьте меня, пожалуйста. Никак не могу добиться работы теста.

Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){


     //делай это.

}

else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
     //сделай так.
}

 

В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит

 

Либо как вам подсказали выше, либо:

if(webDriver.findElements(By.xpath("//li[contains(@class,'m-corr')]")).size() > 0){
     //делай это.
}
else if(webDriver.findElements(By.xpath("//li[contains(@class,'m-wrng')]")).size() > 0){
     //сделай так.
}

 

 Все отлично работает, безмерно благодарен Вам!




#164144 if-циклы при выполнении теста

Отправлено автор: Raindrops 21 декабря 2017 - 19:26 в Selenium - Functional Testing

 

Примерно так, при желании можно еще ID добавить.

 

XPath

//li[contains(@class,'m-wrng')]
//li[contains(@class,'m-corr')]

CSS

li[class*='m-wrng']
li[class*='m-corr']

Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){

     //делай это.

}

else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
     //сделай так.
}

 

В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит




#164143 if-циклы при выполнении теста

Отправлено автор: Raindrops 21 декабря 2017 - 18:58 в Selenium - Functional Testing

написать 2 теста, в одном сделать неправильный ввод и дождаться первого элемента

в другом тесте сделать правильный ввод и дождаться второго элемента

Вот только я спрашивал совсем не об этом.
Кроме того,  class может быть "b-result m-corr" и после десятка вводов, а может стать "b-result m-wrng" и после первого. Поэтому и нужен if цикл.




#164140 if-циклы при выполнении теста

Отправлено автор: Raindrops 21 декабря 2017 - 17:56 в Selenium - Functional Testing

В чем собственно проблема? В составлении условия или локатора?

Это, конечно, возможно.

Никак не могу сообразить как оформить локатор. 




#164138 if-циклы при выполнении теста

Отправлено автор: Raindrops 21 декабря 2017 - 15:46 в Selenium - Functional Testing

Есть элемент, который может принимать 2 вида, в зависимости от ввода пользователя:
<li class="b-result m-wrng" id="result-panel" style="cursor: pointer;">
и
<li class="b-result m-corr" id="result-panel" style="cursor: pointer;">
 
Если class="b-result m-wrng" - нужно завершить тест
Если же class="b-result m-corr" - тест нужно продолжить.

Есть ли какая-то возможность это реализовать?