【问题标题】:Could not start Selenium session: in Junit 3.8.2 test and selenium 3.4 on linux无法启动 Selenium 会话:在 Linux 上的 Junit 3.8.2 测试和 selenium 3.4 中
【发布时间】:2017-07-19 03:32:43
【问题描述】:

我的环境:

linux ubuntu

selenium-html-runner-3.4.0.jar

硒-java-3.4.0

selenium-server-standalone-3.4.0.jar

我要建造:

 javac -cp "/usr/share/java/junit.jar:/home/me/ushare/hobo/selenium/selenium-html-runner-3.4.0.jar:." TestHobo2.java

运行 selenium-server:

java -jar selenium-server-standalone-3.4.0.jar

运行我所做的测试:

java junit.textui.TestRunner TestHobo2

我得到:

java.lang.RuntimeException:无法启动 Selenium 会话:

在 com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:114) 在 com.thoughtworks.selenium.SeleneseTestBase.setUp(SeleneseTestBase.java:139) 在 com.thoughtworks.selenium.SeleneseTestBase.setUp(SeleneseTestBase.java:108) 在 com.thoughtworks.selenium.SeleneseTestCase.setUp(SeleneseTestCase.java:113) 在 TestHobo2.setUp(TestHobo2.java:10) 在 com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:289) 引起:com.thoughtworks.selenium.SeleniumException:

在 com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:111) 在 com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:105) 在 com.thoughtworks.selenium.HttpCommandProcessor.getString(HttpCommandProcessor.java:277) 在 com.thoughtworks.selenium.HttpCommandProcessor.start(HttpCommandProcessor.java:239) 在 com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:105) ... 15 更多

这是我的测试用例:

import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public class TestHobo2 extends SeleneseTestCase {
    public void setUp() throws Exception {
        setUp("http://www.example.com/", "*chrome");
    }
    public void testGetLink() throws Exception {
        selenium.type("name=p_loc", "groove");
        selenium.click("css=input[type=\"Submit\"]");
        selenium.waitForPageToLoad("30000");
    }
}

编辑 2017/07/20 更多信息:

我使用的是 Firefox 版本 52.0.2(64 位)。

我应该在构建后获得以下内容吗?

Note: TestHobod2.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details.

geckodriver -v

1500554646753 geckodriver INFO geckodriver 0.18.0

1500554646753 webdriver::httpapi DEBUG 创建路由

1500554646764 geckodriver 错误地址正在使用(操作系统错误98)

【问题讨论】:

  • 你试过手动创建RemoteDriver吗?
  • 没有。你能举个例子吗?我从导出 Selenium IDE 测试中得到了这个测试代码。

标签: java selenium junit3


【解决方案1】:

你确定你已经正确定义了 selenium 在哪个 ip 地址和端口上运行吗?运行您的 selenium 服务器并将 http://127.0.0.1:4444/wd/hub/ 链接放入您的浏览器。尝试手动创建新会话(单击创建会话并选择浏览器,见下图),应该会出现新的浏览器空白窗口。如果这工作正常,那么硒服务器就可以了。那么服务器和跑步者之间的连接可能会出现问题。
screen of selenium hub with create session option
您是否正确设置了 selenium 驱动程序?例如我正在使用

new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub/"),DesiredCapabilities.firefox())

EDIT1:显示创建 RemoteDriver 实例、创建新浏览器会话并填充 url 的 setUp 方法示例。

WebDriver driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), DesiredCapabilities.firefox());
driver.manage().window().maximize()//maximaze window as possible
driver.get("www.google.com"); //navigate to google, i.e. fill url into opened session

【讨论】:

  • 哇。这更有希望......新的Firefox窗口确实打开了。我在哪里放置 new RemoteWeb 代码行 - setUp() 或 test() ?提前非常感谢。顺便说一句,你能解释一下 setUp() 中的 setUp() 点吗?
  • 编辑:我正在为评论的格式而苦苦挣扎,所以我会更新我的原始答案。
  • 现在一切都到位了。谢谢。
【解决方案2】:

查看代码库并尝试映射您的共享测试代码,似乎暗示您最终将调用 Firefox 浏览器。 Selenium 中的底层实现确保这将导致您的测试代码求助于可能使用 firefox。

您能否确保已将 geckodriver 下载并在您的 PATH 变量中可用?

如果这不能解决问题(这主要是由于桌面上的 firefox 版本与 geckodriver 版本不匹配),您可以尝试切换到使用 Google Chrome

您可以通过

切换到谷歌浏览器

变化setUp("http://www.example.com/", "*chrome"); 收件人setUp("http://www.example.com/", "*googlechrome");

看看这是否会启动浏览器(对于谷歌浏览器,您需要确保已下载 chromedriver 并在本地计算机上可用)

【讨论】:

  • 两个驱动程序的故障相同。我使用的是 Firefox 版本 52.0.2(64 位)。我应该得到以下吗?注意:TestHobod2.java 使用或覆盖已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 geckodriver -v 1500554646753 geckodriver INFO geckodriver 0.18.0 1500554646753 webdriver::httpapi DEBUG Creating routes 1500554646764 geckodriver ERROR Address in use (os error 98)
  • overrides a deprecated API相关的消息与问题无关。您是否确保 chromedriver 是您的 PATH 的一部分?位于哪里?当您从命令提示符运行echo %PATH% 时,您是否在控制台中看到chromedriver 位置?我还注意到你的错误是ERROR address in use。您能否确保通过taskmanagerkill 命令杀死所有可以运行的geckodriver 实例?
  • 该错误是对geckodriver -v 命令的响应。该驱动程序没有其他实例。我无法让显示的测试按原样工作。但是,@Martin 推荐的修改让我进入了测试的工作版本。所以我接受了他的回答。
猜你喜欢
  • 1970-01-01
  • 2013-08-05
  • 2010-11-27
  • 2022-08-04
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多