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

Публикации thepauloo89

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



#158005 подскажите варианты пауз для selenium intellij IDEA 14

Отправлено автор: thepauloo89 31 января 2017 - 07:36 в Selenium - Functional Testing

Привет.

 

Нужна жесткая пауза.

хотел сделать через задержку и интервал проверки, т.е. паузу в интервал проверок.

Но пауза не выполняется, после нахождения элемента всеравно сразу продалжается выполнение.

WebDriverWait wait = new WebDriverWait(browser.getDriver(), 10000, 10000);
WebElement elementik = wait.until(new ExpectedCondition<WebElement>(){
@Override
public WebElement apply(WebDriver d) {
return d.findElement(lblElement.getLocator());
}});

Не понимаю почему не работает.

на сайте http://selenium2.ru/...ced-usage.html 

описано:

 

Данный код будет либо выдаст исключение “TimeoutException” по прошествии 10 секунд, либо вернет найденный в течении 10 секунд элемент. По умолчанию “WebDriverWait” вызывает “ExpectedCondition” каждые 500 миллисекунд до тех пор, пока условие не будет удовлетворено. Условие считается удовлетворенным, если было возвращено “true” в случае булевого “ExpectedCondition” и не “null” для “ExpectedCondition” других типов.

 

т.к. не работает пауза 10000, решил попробовать паузу через интервал сделать, но тоже не работает.

 

нужна пауза равная Thread.sleep(1000);

 

что не так?

 

забыл про существование этой темы)) тему создал когда только начинал в этом всем разбираться)

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

 

Пауза

public void pause(long mills) {

  try {

      Thread.sleep(mills);                 //1000 milliseconds is one second.

  } catch (InterruptedException ex) {

      Thread.currentThread().interrupt();

  }

}




#150711 как сохранять отчеты allure в нужную папку

Отправлено автор: thepauloo89 22 апреля 2016 - 06:51 в Автоматизированное тестирование

Нужно чтобы папка target создавалась не в директории проекта, а на другой машине(\\172.2.4.2\folder\folder\)

где в pom файле это прописывать?

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/20...chema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache....aven-4.0.0.xsd" >
<modelVersion>4.0.0</modelVersion>

<groupId>Test2</groupId>
<artifactId>Test2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<allure.version>1.4.16</allure.version>
<aspectj.version>1.8.5</aspectj.version>
</properties>

<dependencies>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.53.0</version>
</dependency>

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
</dependency>


<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-testng-adaptor</artifactId>
<version>${allure.version}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<parallel>classes</parallel>
<threadCount>4</threadCount>
<testFailureIgnore>true</testFailureIgnore>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>

</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.10.v20150310</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/site/allure-maven-plugin</webAppSourceDirectory>
<stopKey>stop</stopKey>
<stopPort>1234</stopPort>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</reporting>
</project>




#148891 Подскажите как запускать тест не из IDE

Отправлено автор: thepauloo89 26 февраля 2016 - 11:46 в Selenium - Functional Testing

в IDEA на JAVA есть тесты (запускаю их  правой кнопкой мыши на класс-> RUN), если кликать так же на папку то они запускаются по очереди а нужно чтобы все классы одновременно стартовали.

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

и как в целом это реализуют люди.

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

  • 123123ТЬ.jpg



#148924 Подскажите как запускать тест не из IDE

Отправлено автор: thepauloo89 29 февраля 2016 - 06:34 в Selenium - Functional Testing

1. Если использовать аннотации TestNG, можно использовать не Run, а "Run as TestNG" (про JUnit не знаю, но можно поискать в конфигурациях запуска). Если судить по скриншоту - разница лишь в том, что аннотация Test берется из пакета testng.

2. В конфигурациях запуска IDEA - можно выбрать, что именно запускать: конкретный метод, конкретный класс, либо, например, вообще все из определенной папки (в вашем примере - запустить все из папки Chrome или IE, либо вообще - main и т.д.). При таком запуске - будут запущены одной кнопкой, но идти будут по очереди.

3. Опять таки, был бы TestNG - можно было делать запуск через xml. В самом xml как раз есть возможность параллельного запуска тестов (у себя запускать так пробовала - могу лишь сказать, что сам запуск работает, мне он оказался неудобен из-за особенностей ПО и тестов).

4. Про виртуальную машину - см.выше.

Подскажите более подробного как запускать через XML, или где почитать попробую сеичас переделать его на testng




#148894 Подскажите как запускать тест не из IDE

Отправлено автор: thepauloo89 26 февраля 2016 - 13:07 в Selenium - Functional Testing

1. Одновременно? - это типа чтобы несколько браузеров на одной машине в одно время работали с тестами? - смотря как вы их вообще запускаете, если используете jUnit - https://maven.apache...ples/junit.html - раздел Running Tests in Parallel

2. Запуск тестов на другой машине - использовать Грид - http://selenium2.ru/...enium-grid.html . Запуск на других браузерах - http://selenium2.ru/docs/webdriver.html#id5

 

А так вообще-то совет - просмотреть какое-нить видео часа на полтора - написание и запуск тестов на селениум.

одновременно, это если я буду просто кликать на классы руками и запускать то могу все запустить параллельно/одновременно, хочется запускать одной кнопкой все, и есть потребность запускать их на виртуальной машине и не через иде а как то иначе чтобы IDE не была всегда открыта 




#149756 Ожидание аяксов

Отправлено автор: thepauloo89 24 марта 2016 - 05:28 в Selenium - Functional Testing

Гуглить то пробовали?

гуглить пробовал, там пишут что проблема в обновлении.




#149757 Ожидание аяксов

Отправлено автор: thepauloo89 24 марта 2016 - 05:28 в Selenium - Functional Testing

Павел, прочитайте шапку этой ветки форума и укажите что там написано.

я не совсем понял для чего это делать.




#149879 Ожидание аяксов

Отправлено автор: thepauloo89 29 марта 2016 - 10:19 в Selenium - Functional Testing

 

 

Павел, прочитайте шапку этой ветки форума и укажите что там написано.

я не совсем понял для чего это делать.

 

1. Указать какие версии вы всего чего используете. 

2. Полный стектрейс ошибки.

 

версии браузеров и вебдраивером были разные, и на самых актуальных падало, в соседней теме решили проблему.




#149620 Ожидание аяксов

Отправлено автор: thepauloo89 21 марта 2016 - 10:37 в Selenium - Functional Testing

public void waitForAjaxToFinish() {
long currentTime = System.currentTimeMillis();
while (System.currentTimeMillis() - currentTime < 40000) {
boolean ajaxFinished = (Boolean) ((JavascriptExecutor) driver)    /// в этой строке ошибка
.executeScript("return !!jQuery && jQuery.active == 0");
if (ajaxFinished)
return;
}

throw new AssertionError("Ajax haven't finished its job in 40 sec");
}

 

на этом методе падает тест  с такой ошибкой кто нить встречался с таким?

 

INFO: I/O exception (java.net.SocketException) caught when processing request to {}->http://localhost:44505: No buffer space available (maximum connections reached?): connect

 

 




#149758 Ожидание аяксов

Отправлено автор: thepauloo89 24 марта 2016 - 05:31 в Selenium - Functional Testing

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

вот методы первый сам из за которого проблема, второй это пауза.

 

public void waitForAjaxToFinish() {
long currentTime = System.currentTimeMillis();
while (System.currentTimeMillis() - currentTime < 10000) {
boolean ajaxFinished = (Boolean) ((JavascriptExecutor) driver)
.executeScript("return !!jQuery && jQuery.active == 0");
pause(1000);
if (ajaxFinished)
return;
}

throw new AssertionError("Ajax haven't finished its job in 100 sec");
}

 

 

public void pause(long mills) {
try {
Thread.sleep(mills); //1000 milliseconds is one second.
catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}




#152003 Не получается запустить параллельно тесты в нужном количестве.

Отправлено автор: thepauloo89 15 июня 2016 - 08:18 в Автоматизированное тестирование

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

<aspect.jweaver.version>1.8.9</aspect.jweaver.version>
<selenium.server.version>2.53.0</selenium.server.version>
<junit.version>4.12</junit.version>
<allure.maven.plugin.version>2.5</allure.maven.plugin.version>
<maven.surefire.plugin>2.19.1</maven.surefire.plugin>




#152001 Не получается запустить параллельно тесты в нужном количестве.

Отправлено автор: thepauloo89 15 июня 2016 - 07:40 в Автоматизированное тестирование

Java Maven Junit 

 

При таких параметрах, запускаются все методы в классе по очереди,

 

так

<configuration>
<parallel>methods</parallel>
<threadCountMethods>4</threadCountMethods>
<testFailureIgnore>true</testFailureIgnore>

либо так

<configuration>
<parallel>methods</parallel>
<threadCount>4</threadCount>
<testFailureIgnore>true</testFailureIgnore>

 

 

При таких все классы запускаются в которых есть слово "Test"

так

<parallel>classes</parallel>
<threadCountClasses>4</threadCountClasses>
<testFailureIgnore>true</testFailureIgnore>

либо так

<parallel>classes</parallel>
<threadCount>4</threadCount>
<testFailureIgnore>true</testFailureIgnore>

 

 

Подскажите почему так происходит




#149493 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 07:50 в Selenium - Functional Testing

xpath
//input[type='radio'][contains(text,'ПН:')]
*** Element info: {Using=xpath, value=//input[type='radio'][contains(text,'ПН:')]}
 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:500)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
at com.sun.proxy.$Proxy6.click(Unknown Source)
at main.AeroPutTest.aeroTravellerRoundtripSainpetersburgEkatPriceEconom(AeroPutTest.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
at org.testng.TestNG.run(TestNG.java:1031)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
 
 
вот что выдал



#149503 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 08:44 в Selenium - Functional Testing

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.

 

а в третьих нет @ перед аттрибутом. Спасибо.

 

 

 

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?

 

да, xpath не правильный)

если я правильно понял, что ты имеешь ввиду, то вот так

//input[@docnumber='1231231231']

но это снова xpath

 

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

 

не очень понял. ну подтяни из базы номер документа и подставляй в xpath.

Ты этот докнамбер сам создаешь же через UI ?

 

@FindBy (xpath = "//input[@docnumber='1231231231']")
WebElement changeDocument; // выбор документа

 

он так находит этот вариант я знал, но я не знаю как в данном случае сделать то что после знака "=" переменной

docnumber создается когда я создаю паспорт пользователю, паспорта у тестового пользователя я знаю но я хотел сделать метод в который при написании теста я мог бы передать любые цифры вот так так

 bookingCart.changeDocument(номер нужного документа).click(); я понимаю что так можно делать с полем ввода и как это сделать с полем ввода я знаю, а можно как либо сделать это именно с поиском Элемента?




#149515 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 09:19 в Selenium - Functional Testing

вот

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

  • 33333333.jpg



#149490 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 07:44 в Selenium - Functional Testing

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает




#149516 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 09:24 в Selenium - Functional Testing

package main;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

/**
* Created by thepauloo89 on 15.03.2016.
*/
public class BookingCart extends FirstClass  {

public BookingCart(WebDriver driver) {
super(driver);}

String doc_num = "1231231231";
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']") // вот это он подчеркивает и пишет attribute value must be constant
WebElement changeDocument; // выбор документа

}




#149497 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 08:09 в Selenium - Functional Testing

 

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?

 

да, xpath не правильный)

если я правильно понял, что ты имеешь ввиду, то вот так

//input[@docnumber='1231231231']

но это снова xpath

 

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




#149521 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 10:28 в Selenium - Functional Testing

 

попробуй так

String doc_num = "1231231231";
String doc_num_xpath = "//input[@docnumber='" + doc_num + "']")
driver.findElement(By.xpath(doc_num_xpath));

Спасибо за помощь уместил все это и зхаработало!!!! МУХАХАХАХХА 

сделал вот так

 

public void changeDocNum(String docNum) {
String docNumXpath = "//input[@docnumber='" + docNum + "']";
driver.findElement(By.xpath(docNumXpath)).click();
}

 

когда делал вспомнил что делал подобное с дабл кликом чтобы так же делать дабл клик на любой Элемент.




#149492 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 07:46 в Selenium - Functional Testing

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?




#149505 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 08:50 в Selenium - Functional Testing

Например метод в который я передаю данные вот так выглядит.

public void otkudaKuda(String otkuda, String kuda){
departure.sendKeys(otkuda);
wait.until(ExpectedConditions.elementToBeClickable(dropListotkuda));
dropListotkuda.click();
arrival.sendKeys(kuda);
wait.until(ExpectedConditions.elementToBeClickable(dropListKuda)).click(); 

 как то по аналогии с этим можно передавать в поиск Элемента данные?




#149486 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 07:27 в Selenium - Functional Testing

Делаю описание страницы и хочу сделать выбор типа документа универсальным, чтобы можно было выбирать всегда  radiobutton который начинается на ПН.
Выбирать 4(3)radiobutton вариант не подходит т.к. у разных пользователей разный порядок, хотелось бы как то реализовать поиск по части значения ПН в похожей ситуации ранее делал вот так(css = "input[id^='ЗП_']")
но там код другой был. 
 
<tbody class="passengerTbody">
           <tr style="line-height: 1.8">
               <td colspan="2" style="line-height: 1.4;">
                   <input type="checkbox" checked="checked" disabled="disabled" style="margin-bottom: 2px;">
                   Qualintinov V. A.
 
/ <span id="profileSelectedPassportNumber">999988877</span>
 
                   <br>
 
 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="98789700879" name="passport6901898531">
ЗЗ: 98789700879<br>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="999988877" name="passport6901898531" checked="checked">
ЗП: 999988877<br>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="12541254125" name="passport6901898531">
ЗЗ: 12541254125<br>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="1231231231" name="passport6901898531">
ПН: 1231231231<br>
 
 
                   
<br>
 

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

  • 1112222.PNG



#149499 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 08:30 в Selenium - Functional Testing

 

xpath
//input[type='radio'][contains(text,'ПН:')]

Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.

 

*** Element info: {Using=xpath, value=//input[type='radio'][contains(text,'ПН:')]}

тоже не подходит(




#149507 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 08:58 в Selenium - Functional Testing

doc_num = "123"
doc_num_search_xpath = "//input[@docnumber='" + doc_num + "']"

а можешь целиком метод описать ? я не совсем понимаю где это писать.

 

 

вот мой код

 

ublic class BookingCart extends FirstClasss {
public BookingCart(WebDriver driver) {
super(driver);}

 

вот тут нужно создать??? (

private String docnum;
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']")
WebElement changeDocument; // выбор документа

 

я ведь не могу просто переменную создать она будет ругаться

attribute value must be constant




#149511 Как выбрать нужный елемент

Отправлено автор: thepauloo89 16 марта 2016 - 09:06 в Selenium - Functional Testing

String doc_num = "1231231231";
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']")
WebElement changeDocument; // выбор документа

я ведь не могу просто переменную создать она будет ругаться

attribute value must be constant