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

Фотография

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

Itellij Idea selenium java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 08 декабря 2015 - 06:30

Доброе утро.

на форумах много вариантов пауз но не все работают у меня.

 

Подскажите как лучше ставить паузы в автотестах.

 

1) Пауза пока не пропадет элемент(gifка) который крутится пока идет обработка данных.

2) просто пауза чтобы между командами некоторыми 10 секунд.

 

 

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                .withTimeout(40, TimeUnit.SECONDS)
                .pollingEvery(2, TimeUnit.SECONDS)
                .ignoring(NoSuchElementException.class);
//
         wait.until(new Function<WebDriver, WebElement>() {
             public WebElement apply(WebDriver driver) {
                 return driver.findElement(By.xpath("//*[@id=\"companyList\"]/table/tbody/tr[2]/td[2]/img"));
 
сейчас делаю вот так но он не ждет .

 

вот так вроде работает 

 

 WebDriverWait waitOtkuda = new WebDriverWait(driver, 10);
        waitOtkuda.until(ExpectedConditions.elementToBeClickable(By.linkText("Москва, Россия")));

  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 08 декабря 2015 - 07:17

1) Пауза пока не пропадет элемент(gifка) который крутится пока идет обработка данных.

 

invisibilityOfElementLocated

http://selenium.goog...qa.selenium.By)

 

2) просто пауза чтобы между командами некоторыми 10 секунд.

 

 

Не понял, что тут имеется ввиду


  • 0

#3 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 08 декабря 2015 - 08:39

 

1) Пауза пока не пропадет элемент(gifка) который крутится пока идет обработка данных.

 

invisibilityOfElementLocated

http://selenium.goog...qa.selenium.By)

 

2) просто пауза чтобы между командами некоторыми 10 секунд.

 

 

Не понял, что тут имеется ввиду

  WebElement biletOtTuda = driver.findElement(By.xpath("//*[@id=\"flights-from\"]/div[2]/table/tbody[4]/tr/td[4]"));
    biletOtTuda.click();
 
вот тут просто паузу
 
 
    WebElement rasschitat = driver.findElement(By.xpath("//*[@id=\"sendForm\"]"));
    rasschitat.click();
 
 
я нашел про  HighlightingWrapper и теперь стабильнее работает, так как он делает по две секунды между действиями паузу, но может есть команда чтобы я мог в любой момент между действиями сделать паузу например 10 сек.
 

  • 0

#4 serjb9

serjb9

    Новый участник

  • Members
  • Pip
  • 68 сообщений

Отправлено 08 декабря 2015 - 09:11

если нужно просто приостановить выполнение потока, то посмотрите тут

http://stackoverflow...r-a-few-seconds


  • 0

#5 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 08 декабря 2015 - 11:48

спасибо


  • 0

#6 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 09 декабря 2015 - 06:37

 

1) Пауза пока не пропадет элемент(gifка) который крутится пока идет обработка данных.

 

invisibilityOfElementLocated

http://selenium.goog...qa.selenium.By)

 

не получается это сделать по примеру пишу, а он не принимает. 

 

 

WebElement rasschitat = driver.findElement(By.xpath("//*[@id=\"sendForm\"]")); 
rasschitat.click(); 

// вот тут появляется картинка ожиддания вот ее xpath ("/html/body/div[18]")
как оформить команду ожидания пока картинка не пропадет

WebElement dobavitVkorzinu = driver.findElement(By.id("airpricing_booking-cart-bytime")); 
dobavitVkorzinu.click();


  • 0

#7 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 09 декабря 2015 - 07:57

// вот тут появляется картинка ожиддания вот ее xpath ("/html/body/div[18]")
как оформить команду ожидания пока картинка не пропадет

Как-то так:

 

new WebDriverWait(driver, 15).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("/html/body/div[18]")));

 


  • 0

#8 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 09 декабря 2015 - 08:42

// вот тут появляется картинка ожиддания вот ее xpath ("/html/body/div[18]")
как оформить команду ожидания пока картинка не пропадет

Как-то так:

 

new WebDriverWait(driver, 15).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("/html/body/div[18]")));

 

 

 

 

я прописал вот так  WebElement rasschitat = driver.findElement(By.xpath("//*[@id=\"sendForm\"]"));

    rasschitat.click();
 
    WebDriverWait wait2 = new WebDriverWait(driver, 5);
    wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("/html/body/div[18]/img")));
 
    WebElement dobavitVkorzinu = driver.findElement(By.id("airpricing_booking-cart-bytime"));
    dobavitVkorzinu.click();
 
не работает он не ждет

  • 0

#9 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 09 декабря 2015 - 08:56

Должно работать

М.б. у тебя храth неверный, м.б. надо // т.е. //html/body/div[18]/img

 

И ошибок никаких нет ?


  • 0

#10 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 09 декабря 2015 - 09:09

он получается ждет не появления xpatha а просто число секунд которое написано, он не проверяет есть элемент или нет его .

 

 

org.openqa.selenium.TimeoutException: Timed out after 5 seconds waiting for element to no longer be visible: By.xpath: /html/body/div[18]/img

 

вот первая красная строчка ошибки


  • 0

#11 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 09 декабря 2015 - 11:15

решил делать иначе

вот так работает

 

    WebElement rasschitat = driver.findElement(By.xpath("//*[@id=\"sendForm\"]"));
    rasschitat.click();
 
    WebDriverWait wait2 = new WebDriverWait(driver, 500);
    wait2.until(ExpectedConditions.elementToBeClickable(By.id("airpricing_booking-cart-bytime")));
 
 
    WebElement dobavitVkorzinu = driver.findElement(By.id("airpricing_booking-cart-bytime"));
    dobavitVkorzinu.click();

  • 0

#12 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 09 декабря 2015 - 13:33

    WebDriverWait wait2 = new WebDriverWait(driver, 500);

 

 

500 секунд :shok: , ставь хотя бы 15 или 20


  • 0

#13 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 09 декабря 2015 - 14:01

 

    WebDriverWait wait2 = new WebDriverWait(driver, 500);

 

 

500 секунд :shok: , ставь хотя бы 15 или 20

 

 

 

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


  • 0

#14 spy686

spy686

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 30 января 2017 - 20:39

Привет.

 

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

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

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

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);

 

что не так?


  • 0

#15 thepauloo89

thepauloo89

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


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

Привет.

 

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

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

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

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();

  }

}


  • 0

#16 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 31 января 2017 - 07:54

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

Зачем тебе этот метод ? Почему ты просто не используешь Thread.sleep ???


  • 0

#17 DmitriyQA

DmitriyQA

    Постоянный участник

  • Members
  • PipPipPip
  • 183 сообщений
  • ФИО:Коваленко Дмитрий Владимирович
  • Город:Tel Aviv

Отправлено 01 февраля 2017 - 10:33

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

Зачем тебе этот метод ? Почему ты просто не используешь Thread.sleep ???

 

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


  • 0

Senior QA/ Wix.com / qaacademy.net


#18 DmitriyQA

DmitriyQA

    Постоянный участник

  • Members
  • PipPipPip
  • 183 сообщений
  • ФИО:Коваленко Дмитрий Владимирович
  • Город:Tel Aviv

Отправлено 01 февраля 2017 - 11:19

Попробуйте этот код:

WebDriver driver = new FirefoxDriver();
driver.get("http://somedomain/ur...delays_loading");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));


  • 0

Senior QA/ Wix.com / qaacademy.net


#19 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 01 февраля 2017 - 12:59

 


 

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

 

 

Ну да или поставить  throws InterruptedException.

Жесткий слип используется крайне редко, поэтому загромождения кода не будет


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных