Element not found во время выполнения теста

432 views
Skip to first unread message

alex.mal...@gmail.com

unread,
May 17, 2016, 3:32:35 PM5/17/16
to selen...@googlegroups.com
Привет! 
сразу прошу прощения за, возможно, глупый вопрос, но бьюсь целый вечер. 

Сегодня днем написал простой тест на логин. Писал его на работе используя Мак. Решил доработать вечером дома и взял файл с собой. Дома Вин10. Установил все как нужно еще и дома, запускаю тест, а он падает из-за cssSelector. Селектор проверял неоднократно - все правильно. Пытался разными способами его записать - не помогло. Использую этот же селектор, но без Maven, JUnit, Selenide, тоесть только с Selenium WebDriver и работает хорошо.

Вот кусок кода:
import org.junit.Test;
import org.openqa.selenium.By;

import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.Wait;
import static com.codeborne.selenide.Selenide.open;


public class simpleSignInTest {

@Test
public void signInToCH(){

open("***");
$("#welcome-overlay-window > div > div.close_switcher > div").click();

Вот ошибки из консоли:
Element not found {#welcome-overlay-window > div > div.close_switcher > div} Expected: visible

Caused by: NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"#welcome-overlay-window > div > div.close_switcher > div"} at com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:31)

Andrei Solntsev

unread,
May 17, 2016, 6:04:50 PM5/17/16
to alex.mal...@gmail.com, selenide-ru
Этот тест работает и в Chrome, и в Firefox. Надо только сделать таймаут побольше, а то этот сайт больно тормознутый.

Andrei Solntsev

17 мая 2016 г., 22:32 пользователь <alex.mal...@gmail.com> написал:
Привет! 
сразу прошу прощения за, возможно, глупый вопрос, но бьюсь целый вечер. 

Сегодня днем написал простой тест на логин. Писал его на работе используя Мак. Решил доработать вечером дома и взял файл с собой. Дома Вин10. Установил все как нужно еще и дома, запускаю тест, а он падает из-за cssSelector. Селектор проверял неоднократно - все правильно. Пытался разными способами его записать - не помогло. Использую этот же селектор, но без Maven, JUnit, Selenide, тоесть только с Selenium WebDriver и работает хорошо.

Вот кусок кода:
import org.junit.Test;
import org.openqa.selenium.By;

import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.Wait;
import static com.codeborne.selenide.Selenide.open;


public class simpleSignInTest {

@Test
public void signInToCH(){


$("#welcome-overlay-window > div > div.close_switcher > div").click();

Вот ошибки из консоли:
Element not found {#welcome-overlay-window > div > div.close_switcher > div} Expected: visible

Caused by: NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"#welcome-overlay-window > div > div.close_switcher > div"} at com.codeborne.selenide.impl.WebElementSource.createElementNotFoundError(WebElementSource.java:31)

--
Вы получили это сообщение, поскольку подписаны на группу "selenide-ru".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес selenide-ru...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Message has been deleted

alex.mal...@gmail.com

unread,
May 18, 2016, 12:17:24 PM5/18/16
to selen...@googlegroups.com, alex.mal...@gmail.com
Разобрался! Работает! 
Извините за беспокойство и глупый вопрос) 

среда, 18 мая 2016 г., 8:29:18 UTC+3 пользователь alex.mal...@gmail.com написал:
А можешь, пожалуйста, показать пример куда именно вставлять таймаут? И какой именно?) Я профан в этом.
Нашел в FAQ
public void setUp() {
Configuration.timeout = 6000;}

И в Configuration.java:
public static long pollingInterval = Long.parseLong(System.getProperty("selenide.pollingInterval", "100"));

Или может есть метод, чтобы было ожидание пока не появится элемент по айди?

polikovsk...@gmail.com

unread,
May 31, 2016, 3:51:36 PM5/31/16
to selenide-ru, alex.mal...@gmail.com
вторник, 17 мая 2016 г., 18:04:50 UTC-4 пользователь Andrei Solntsev написал:

> Этот тест работает и в Chrome, и в Firefox. Надо только сделать таймаут побольше, а то этот сайт больно тормознутый.
>


А есть встроенное ожидание при выполнении команды click? Хорошо бы проверять что элемент clickable

Andrei Solntsev

unread,
Jun 1, 2016, 4:02:39 PM6/1/16
to Theodore Polikovskiy, selenide-ru, alex.mal...@gmail.com
Проблема в том, что в природе не существует определения, что такое "clickable".

Selenide делает так: 
  1. он кликает по элементу;
  2. если произошла ошибка (например, элемент не найден или перекрыт другим элементом), то немножко ждёт
  3. и пробует снова
  4. и так до 4 секунд
если же при клике по элементу ошибки не было, Selenide идёт дальше. 

Andrei Solntsev

31 мая 2016 г., 22:51 пользователь <polikovsk...@gmail.com> написал:
вторник, 17 мая 2016 г., 18:04:50 UTC-4 пользователь Andrei Solntsev написал:
> Этот тест работает и в Chrome, и в Firefox. Надо только сделать таймаут побольше, а то этот сайт больно тормознутый.
>


А есть встроенное ожидание при выполнении команды click? Хорошо бы проверять что элемент clickable
--
Вы получили это сообщение, поскольку подписаны на группу selenide-ru.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес selenide-ru...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages