Мой тест на селен не работает, где проблема? - PullRequest
0 голосов
/ 05 октября 2019

Я хочу использовать селеновую сетку, и это мой шаг:

  1. Запустите Selenium Grid Hub: java -jar selenium-server-standalone-3.141.59.jar -ro hub
  2. Запустить узел Selenium: java -jar selenium-server-standalone-3.141.59.jar -ro узел -hub http://localhost:4444/grid/register -браузер browserName = chrome
  3. Java-код:
    public class TestGrid {
        static WebDriver driver;
        static String nodeUrl;

        @Before
        public void setup() throws MalformedURLException {
            nodeUrl = "http://localhost:4444/wd/hub";
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setBrowserName("chrome");
            capabilities.setPlatform(Platform.MAC);
            driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);
        }

        @Test
        public void simpleTest() {
            driver.get("https://www.edureka.co");
            Assert.assertEquals("Instructor Led Online Courses with 24x7 On-Demand Support | Edureka",
                    driver.getTitle());
        }

        @After
        public void afterTest() {
            driver.quit();
        }
    }

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

driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);

Я вижу только из консоли:

Oct 05, 2019 10:08:15 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end

И в консоли концентратора selenim:

10:09:16.438 INFO [RequestHandler.process] - Got a request to create a new session: Capabilities {browserName: chrome, platform: MAC, version: }
10:09:16.443 INFO [TestSlot.getNewSession] - Trying to create a new session on test slot {server:CONFIG_UUID=952f43b8-f264-48b3-aa6f-eff6ff59b16e, seleniumProtocol=WebDriver, browserName=chrome, platformName=MAC, platform=MAC}

Тогда никогда не приходите на тестовую часть

Пожалуйста, помогите рассказать, что здесь происходит

Я использую Mac, поэтому chromedriver --version дает:

ChromeDriver 77.0.3865.40 (f484704e052e0b556f8030b65b953dce96503217-refs/branch-heads/3865@{#442})

Я запускаю эту команду в той же папке, что и папка selenium-server-standaralon-3.141.jar И это ошибка для java junit:

org.openqa.selenium.SessionNotCreatedException: Невозможно создать новый удаленный сеанс. требуемые возможности = возможности [{browserName = chrome, версия =, платформа = MAC}], необходимые возможности = возможности [{}] Информация о сборке: версия: '3.0.1', версия: '1969d75', время: '2016-10-18 09:49:13 -0700 'Системная информация: хост:' Franks-MacBook-Pro.local ', ip:' 192.168.0.103 ', os.name:' Mac OS X ', os.arch:' x86_64 ', os.version: '10 .14.6 ', java.version:' 1.8.0_171 'Информация о драйвере: driver.version: RemoteWebDriver

Я следовал инструкциям, приведенным ниже, но при запуске java junit яполучено сообщение об ошибке из консоли концентратора сервера selenium:

Got a request to create a new session: Capabilities {browserName: chrome, platform: MAC}
10:30:12.334 INFO [TestSlot.getNewSession] - Trying to create a new session on test slot {server:CONFIG_UUID=4b8d38ff-8be6-4894-8c17-8fe334c7c3bc, seleniumProtocol=WebDriver, browserName=chrome, maxInstances=5, platformName=MAC, platform=MAC}
10:30:28.926 INFO [RequestHandler.process] - Error forwarding the new session Error forwarding the request Failed to connect to /10.1.3.246:14786
org.openqa.grid.internal.exception.NewSessionException: Error forwarding the request Failed to connect to /10.1.3.246:14786
    at org.openqa.grid.web.servlet.handler.RequestHandler.forwardNewSessionRequestAndUpdateRegistry(RequestHandler.java:94)
    at org.openqa.grid.web.servlet.handler.RequestHandler.process(RequestHandler.java:114)
    at org.openqa.grid.web.servlet.Driver

Я увидел эту ошибку после того, как скопировал chromedriver в ту же папку, что и папка селена jar.

И в консоли Java я увидел это:

Oct 08, 2019 10:30:12 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Oct 08, 2019 10:31:28 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Oct 08, 2019 10:32:44 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to straight W3C remote end connection

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{browserName=chrome, platform=MAC}], required capabilities = Capabilities [{}]
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
System info: host: 'my.local', ip: '10.1.2.137', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.6', java.version: '1.8.0_171'
Driver info: driver.version: RemoteWebDriver

    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:91)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:241)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:128)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:155)
    at com.datavisor.e2e.TestGrid.setup(TestGrid.java:41)
    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:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

может это проблема с версией?

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Ваша команда -ro, может быть, вы имеете в виду -role.

Попробуйте этот шаг:

  1. Откройте командную строку:
java -jar selenium-server-standalone-3.141.59.jar -role hub

В случае успеха вы получите этот журнал:

[Hub.start] - Selenium Grid hub is up and running
[Hub.start] - Nodes should register to http://somethingIP:4444/grid/register/
[Hub.start] - Clients should connect to http://somethingIP:4444/wd/hub
Откройте другую командную строку (или новую вкладку):
java -Dwebdriver.chrome.driver=chromedriver -jar selenium-server-standalone-3.141.59.jar -role node -hub http://localhost:4444/grid/register

В случае успеха вы получите этот журнал:

The node is registered to the hub and ready to use

Документация

Примечание:

Соберите chromedriver и селен .jar вместе в одной папке. Если нет, измените этот конфиг -Dwebdriver.chrome.driver=chromedriver на =fullPath/chromedriver

Попробуйте следующий код:

import java.net.MalformedURLException;
import java.net.URL;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Platform;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class TestGrid {
    private RemoteWebDriver driver;
    private DesiredCapabilities capabilities = new DesiredCapabilities();
    private String nodeUrl;

    @Before
    public void setUp() throws MalformedURLException {
        nodeUrl = "http://localhost:4444/wd/hub";
        capabilities.setBrowserName("chrome");
        capabilities.setPlatform(Platform.MAC);
        driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);   
    }

    @Test
    public void simpleTest() {
        driver.get("https://www.edureka.co");
        Assert.assertEquals("Instructor-Led Online Training with 24X7 Lifetime Support | Edureka", driver.getTitle());
    }

    @After
    public void afterTest() {
        driver.quit();
    }
}

Надеюсь, это поможет.

0 голосов
/ 06 октября 2019

Вы используете Junit? Если это так, проверьте трассировку ошибки Junit на наличие ошибки ниже.

org.openqa.selenium.SessionNotCreatedException: Невозможно создать новый сервис: ChromeDriverService Информация о сборке: версия: '3.141.59', редакция: 'e82be7d358', время: '2018-11-14T08: 25: 53'

Если вы получаете ошибку, то

Я полагаю, что ваш сеанс браузера никогда не создается во время выполнения - похоже, у вас нет исполняемого файла драйвера на узле компьютера. Сохраните исполняемый файл драйвера (chromedriver.exe, если вы используете браузер Chrome - выберите подходящую версию драйвера, которая поддерживает версию вашего браузера) в той же папке, что и selenium-server-standalone-3.141.59

Или попробуйте добавить -Dwebdriver.chrome.driver = параметр chromedriver при запуске узла. Ваша полная команда будет,

java -jar -Dwebdriver.chrome.driver=chromedriver selenium-server-standalone-3.141.59.jar -role node -hub http://localhost:4444/grid/register -browser browserName=chrome
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...