我是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右键单击网页上的指定位置。
答案 0 :(得分: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 -9 <PID>
将其删除。
答案 1 :(得分:4)
如果您使用的是最新版本的Selenium RC(1.0之后),您应该更改以下内容:
setUp("https://www.google.com/", "*chrome");
代表
setUp("https://www.google.com/", "*firefox");
如果这不起作用,请尝试创建一个单独的firefox配置文件并使用该配置文件:
http://seleniumhq.org/docs/05_selenium_rc.html#specifying-the-firefox-profile
答案 2 :(得分:2)
我知道这可能听起来很傻但您确定在代码中提供了selenium.start()
吗?初学者可以犯这个错误。
答案 3 :(得分:1)
始终确保在测试步骤结束时调用selenium.stop()
方法。
答案 4 :(得分:0)
setUp方法基本上调用start方法,因此不需要在上面的代码中给出selenium.start()。我猜这是一种硒的错误。它会在得到一些回应之前停止测试。但我还没找到原因。