Использую Selenide 5.2.4 для java - проверял и на более ранних версиях 5.х.х., ошибка аналогичная. На чистом Selenium и Selenide версии 4.10 и ниже ошибки нет.
There was an error in the forked process
No webdriver is bound to current thread: 1. You need to call open(url) first.
org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
No webdriver is bound to current thread: 1. You need to call open(url) first.
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:656)
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Подскажите пожалуйста, почему так происходит. Самое интересное, что если менять версию Selenide на 4-ую, затем снова на 5-ую, подгрузить все зависимости снова, то несколько запусков - работает! А затем как-будто бы executor вспоминает, что у него 5-ая версия и начинает падать внезапно. При этом в логах указывается INFO: Selenide v. 5.2.4 Это меня еще больше удивляет. Но рано или поздно ошибка на 5-ой версии всегда есть.
Чтобы выполнить Javascript нужно чтобы уже была открыта вкладка/окно. Вам же в ошибке так и написано - сначала откройте какую-нить страничку.
Попробуйте open("about:blank")
Переключиться на новую вкладку.
Из вашего верхнего сообщения ощущается проблема во втором шаге. Притом, по коду стектрейса, вообще непонятно что это из теста. Я вам дал ссылку на тему где описывается как открывать новые закладки. В вашей смежной свежей теме вы уже поняли как переключаться на новые закладки. Так в чём проблема ещё раз?
Я открываю браузер. Работаю в одной вкладке.
Затем открываю новую вкладку через JS. Переключаюсь в нее.
Но этого не происходит, тест падает сразу после вызова JSE.
Вот в чем проблема. В смежной теме я пытался обойти вызов JS через создание двух инстансов драйвера - не вышло. А переключаться между вкладками я умею. Переключиться в пустую - нельзя. Только если она уже существует и там уже что-то открыто.
Попробовал ваш способ. Ошибка аналогичная. То есть выполняется Selenide.switchTo().window(1);, затем я поставил sleep() на всякий случай - он спокойно ждет. Однако после того как секунды ожидания проходят - сразу же падает. То есть Selenide отказывается работать, пока не будет вызвана функция com.codeborne.selenide.Selenide.open()
Решил проверить дебаггером через -Dmaven.surefire.debug и словил вот такое: прямо сразу после запуска тестов:
Please refer to C:\Users\lovtsovkn\IdeaProjects\agclone\target\surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Command was cmd.exe /X /C ""C:\Program Files\Java\jdk1.8.0_191\jre\bin\java" -javaagent:C:\Users\user\.m2\repository/org/aspectj/aspectjweaver/1.8.10/aspectjweaver-1.8.10.jar -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:trans
port=dt_socket,server=y,suspend=y,address=5005 -jar C:\Users\LOVTSO~1\AppData\Local\Temp\surefire8738254732406849802\surefirebooter4774144785950532456.jar C:\Users\lovtsovkn\AppData\Local\Temp\surefire8738254732406849802 2019-07-18T19
-07-30_522-jvmRun1 surefire3771998065571144702tmp surefire_07990134847691497474tmp"
Error occurred in starting fork, check output in log
Process Exit Code: 2
org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Command was cmd.exe /X /C ""C:\Program Files\Java\jdk1.8.0_191\jre\bin\java" -javaagent:C:\Users\lovtsovkn\.m2\repository/org/aspectj/aspectjweaver/1.8.10/aspectjweaver-1.8.10.jar -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:trans
port=dt_socket,server=y,suspend=y,address=5005 -jar C:\Users\LOVTSO~1\AppData\Local\Temp\surefire8738254732406849802\surefirebooter4774144785950532456.jar C:\Users\user\AppData\Local\Temp\surefire8738254732406849802 2019-07-18T19
-07-30_522-jvmRun1 surefire3771998065571144702tmp surefire_07990134847691497474tmp"
Error occurred in starting fork, check output in log
Process Exit Code: 2
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:669)
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.287 s
[INFO] Finished at: 2019-07-18T19:07:31+04:00
[INFO] ------------------------------------------------------------------------
Что-то дичь какая-то. До этого с дебаггером было все ок. Теперь код вообще не влияет, дебаггер сразу падает.
Это само собой. Open() у меня в @beforeMethod (testNG), там совершаются некие действия по авторизации. Затем я открываю другую страницу в новой вкладке. Ну а дальше вы знаете.
То есть Selenide открыл таки вкладку. Но ему не нравится, что в новой не открыли url.
Таким образом Selenide остается доволен, что выполнили open() таки. Конечно это немного костыльно, то есть два раза ссылку по сути открываем. Но работает!
Нет, полная какая то лажа. Теперь при вызове скрипта ошибка. То есть даже вкладка новая не открылась.
There was an error in the forked process
No webdriver is bound to current thread: 1. You need to call open(url) first.
org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
No webdriver is bound to current thread: 1. You need to call open(url) first.
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:656)
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
P.S. Подозреваю, что проблема в том, что у вас TestNG и open вызывается не в самом тесте, а в методе @Before, а значит, в другом потоке. Если так, просто перенесите open() в тест.
P.P.S. Зачем вообще открывать новую вкладку в тесте? Как правило, это плохая идея.
Да, TestNG и я делаю вызов open() в @BeforeMethod. Так а в чем тогда будет смысл этих методов testNG, если я буду в каждом тесте прописывать open()? Почему в 4 версии Селенида это работало?
TestNG версии 6.14.3 и она не менялась. Новую 7 версию не подрубаю, потому что она еще бета.