t.me/atinfo_chat Telegram группа по автоматизации тестирования

Проблемы при использовании Selenide "No webdriver is bound to current thread"

selenide
java
webdriver
Теги: #<Tag:0x00007f21d4b88ec0> #<Tag:0x00007f21d4b88bc8> #<Tag:0x00007f21d4b88a88>

(Андрей Елфимов) #1

Приветствую!
Пытаюсь внедрить автоматическое тестирование на основе Selenide. Сами тесты работаю как в обычном так и headless режиме, но постоянно выпадает алярм:
No webdriver is bound to current thread

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

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

import com.codeborne.selenide.Selenide;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;

import static com.codeborne.selenide.Selenide.$;

public class TestClass {

@Before
public void setUp() {
Selenide.open(“https://ru.selenide.org”);
}

@Test
public void someTest() {
$(By.xpath("//div[@class=‘wrapper’]//header//a//img")).click();

}
}

Есть ощущение, что я изначально упускаю какую-то мелочь. Помогите, jопа уже в огне.
Использую:
Maven + JUnit

Pom:

<?xml version=“1.0” encoding=“UTF-8”?>
<project xmlns=“http://maven.apache.org/POM/4.0.0
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion>4.0.0</modelVersion>

<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13-beta-1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.stephenc.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
<version>1.0-1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>selenium-jupiter</artifactId>
<version>3.2.1</version>
<scope>test</scope>
</dependency>

</dependencies>

</project>


(Sergey Rybakin) #2

а Вы читали вот эту тему?


А смотрели там pom.xml?

Не слишком ли много у Вас в pom.xml?


(asolntsev) #3

Я попробовал запустить ваш класс - работает.
Ошибки “No webdriver is bound to current thread” не получаю.

Советую создать мини-проект на гитхабе, так чтобы любой мог сделать git clone, mvn test - и проблема стабильно повторялась. Тогда мы вам быстро поможем.

P.S. Советую упростить локатор. Так короче и читается гораздо проще:
$(".wrapper header a img");


(Андрей Елфимов) #4

Сделал https://github.com/AndrewElfimov/Example

Может дело в ОС? У меня стоит ubuntu 18.04, пишу в intellij idea


(Sergey Rybakin) #5

Зачем дважды одно и то же?
image

Зачем такой лютый xpath в примере?
$(“header img”) не лаконичнее ли? и, главное, читабельнее:
header должен иметь img.
А тот лютый xpath пока дочитаешь, уже хочется в отпуск!

Но это не по теме.

По теме:
на сколько я понял: на локальной машине тесты работают, а когда запуск тех же тестов из-под Jenkins на удалённом сервере, то в логах ошибка “No webdriver is bound to current thread”

На моём сервере под Убунтой, который поднимает Jenkins для прогона тестов в автоматическом режиме, попросил админа удалить старый .m2
B след раз при старте тестов под упр. Jenkins, selenide 5.2.4 с помощью bonigarcia подкачал “свежачок”, и ошибка исчезла.


(Андрей Елфимов) #6

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


(asolntsev) #7

А, так может, вы имеете в виду такой лог при запуске тестов?

INFO: No webdriver is bound to current thread: 1 - let's create a new webdriver

Так это же не ошибка, это INFO!
Это нормальное сообщение, так и должно быть.