Selenium - 无法启动Selenium会话:无法启动新的浏览器会话:启动浏览器时出错

9

我是新手使用Selenium。我生成了我的第一个Java Selenium测试用例,并且它已经成功编译。但是当我运行该测试时,我遇到了以下RuntimeException异常:

java.lang.RuntimeException: Could not start Selenium session: Failed to start new browser session: Error while launching browser at com.thoughtworks.selenium.DefaultSelenium.start <DefaultSelenium.java:88>

请告诉我如何修复这个错误。

这是我想要运行的Java文件。

import com.thoughtworks.selenium.*;

import java.util.regex.Pattern;

import junit.framework.*;

public class orkut extends SeleneseTestCase {

 public void setUp() throws Exception {

  setUp("https://www.google.com/", "*chrome");

 }
 public void testOrkut() throws Exception {

  selenium.setTimeout("10000");

  selenium.open("/accounts/ServiceLogin?service=orkut&hl=en-US&rm=false&continue=http%3A%2F%2Fwww.orkut.com%2FRedirLogin%3Fmsg%3D0&cd=IN&skipvpage=true&sendvemail=false");

  selenium.type("Email", "username");

  selenium.type("Passwd", "password");

  selenium.click("signIn");

  selenium.selectFrame("orkutFrame");

  selenium.click("link=Communities");

  selenium.waitForPageToLoad("10000");

 }

 public static Test suite() {

  return new TestSuite(orkut.class);

 }

 public void tearDown(){

  selenium.stop();

 }

 public static void main(String args[]) {

  junit.textui.TestRunner.run(suite());

 }

}

我首先通过命令提示符启动了selenium服务器,然后通过另一个命令提示符执行上述java文件。

第二个问题:我能否在网页上的指定位置使用selenium进行右键单击。


你好!能否发布一些代码,展示你正在尝试启动浏览器的方式(或你正在使用的配置)?这可能有助于找出问题所在。此外,你是否从Selenium RC控制台中获得了任何有用的输出? - Pascal MARTIN
我已经在我的问题中添加了更多信息。 - Amit
5个回答

5

很可能这个问题是由已经运行的Selenium服务器实例引起的。新的实例需要监听相同的端口号,但是不能,因为该端口已经被使用。

假设您的Selenium服务器配置为在端口4444上启动。使用“netstat”命令确定该端口是否正在使用:

在Windows上:netstat -an | find "4444"

期望看到如下输出:

  TCP    0.0.0.0:4444           0.0.0.0:0              LISTENING
  TCP    [::]:4444              [::]:0                 LISTENING

在Linux上,使用以下命令:netstat -anp | grep 4444 (手头没有Linux机器,无法显示示例输出!)
如果看到任何输出,您需要杀死正在监听Selenium想要使用的端口的进程。在Windows上,使用netstat -anb查找进程名称(它将在指定端口号的行之后列出)。使用任务管理器终止它。在Linux上,进程PID和名称将由上面的命令列出-使用kill <PID>终止它。

4

2

我知道这可能听起来很傻,但你确定你的代码中有 selenium.start() 吗?初学者可能会犯这个错误。


我遇到了完全相同的问题,并且添加了start()来解决会话问题。 - ngeek

1

始终确保在测试步骤结束时调用selenium.stop()方法。


0
setUp 方法基本上调用了 start 方法,所以在上面的代码中不需要给出 selenium.start()。我猜这是 Selenium 的一个 bug。它在获得一些响应之前停止测试。但我还没有找到原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接