51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: bruce.gu
打印 上一主题 下一主题

Selenium 连续记录【有啥问题可以在这里问,一起讨论】

[复制链接]

该用户从未签到

1#
发表于 2009-1-7 15:36:43 | 显示全部楼层
楼主,请教你一个入门级的问题。我用selenium+eclipse+Junit.用selenuimIDE录好脚本,在eclipse里建好工程,项目属性中引入selenium-java-client.jar selenium-java-client-driver-sources.jar和selenium-java-client-driver-tests.jar,以及Junit3.8.1
然后把脚本写到项目里,启动selenium-server,运行脚本,结果会出现这样的错误:
com.thoughtworks.selenium.SelenuimException:ERROR Server Exception:sessionID should not be null;has this session been started?
at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java
at com.thoughtworks.selenium.DefaultSelenium.setContext(DefaultSelenium.java)
这是哪里出了问题?谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2009-1-7 15:40:04 | 显示全部楼层
我把错误都贴出来:
com.thoughtworks.selenium.SeleniumException: ERROR Server Exception: sessionId should not be null; has this session been started yet?
        at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:73)
        at com.thoughtworks.selenium.DefaultSelenium.setContext(DefaultSelenium.java:574)
        at com.thoughtworks.selenium.SeleneseTestCase.setUp(SeleneseTestCase.java:126)
        at test56.test56.setUp(test56.java:8)
        at junit.framework.TestCase.runBare(TestCase.java:125)
        at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:71)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-1-8 10:28:28 | 显示全部楼层
server开了,确实只用导入selenium-java-client-driver.jar的,我是病急乱投医,不过还是不行
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-1-8 14:11:01 | 显示全部楼层
import junit.framework.TestCase;
import com.thoughtworks.selenium.*;
public class Test extends TestCase {
    private Selenium selenium;

    public void setUp() throws Exception {
        String url = "http://www.google.com";
        selenium = new DefaultSelenium("localhost", 4444, "*firefox", url);  //4444 is default server port
        selenium.start();      
    }

    protected void tearDown() throws Exception {
//        selenium.stop();
    }

    public void testGoogle() throws Throwable {
        selenium.open("http://www.google.com/webhp?hl=en");
        assertEquals("Google", selenium.getTitle());
        selenium.type("q", "Selenium OpenQA");
        assertEquals("Selenium OpenQA", selenium.getValue("q"));
        selenium.click("btnG");
        selenium.waitForPageToLoad("5000");
        assertEquals("Selenium OpenQA - Google Search", selenium.getTitle());
    }
}
这个脚本在别人的机器上跑是正常的,所以我想应该脚本没有什么问题
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-1-8 15:47:20 | 显示全部楼层
谢谢楼上,问题解决了,出在两个地方。
1。我的脚本用的firefox,换成ie就可以了。听同事说这是selenium的一个BUG,如何解决我再研究下之后发上来
2.我用IE跑的时候出现了404页面无法打开的问题,设置了IE就可以了。

终于完成了搭建的第一步,以后和大家一起学习selenium,这个帖子真好,有啥问题都在这里讨论了!
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-1-19 11:21:15 | 显示全部楼层
hi, 我有一个问题要请教。
现在需要按“moody's NRDE"按钮,然后进入到下一个界面中,这个操作在IE上是可以通过的。但是用selenium跑的时候页面就不能跳转到下一个界面了,并且提示"done. but with errors on page."这是怎么回事?
sever 上有一个报错是:
warn-invalid length: content-length=22395 written=16047 for http://mdynycdssmdev.ad.moodys.n ... E2E2_DDS/MOODYS.CSS

我的代码如下:
public void test() throws Throwable {
... ...
                selenium.selectFrame("Tree");            
                selenium.click("GotoNRDE");
                selenium.waitForPageToLoad("50000");
    }


[ 本帖最后由 nosedive 于 2009-1-19 11:37 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-1-19 15:53:31 | 显示全部楼层
我们的系统不支持firefox。。。没办法在FF里跑,我直接抓取到对象,然后写的代码。

[ 本帖最后由 nosedive 于 2009-1-19 16:17 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-1-19 17:30:04 | 显示全部楼层
原帖由 nosedive 于 2009-1-19 15:53 发表
我们的系统不支持firefox。。。没办法在FF里跑,我直接抓取到对象,然后写的代码。


问题解决了,我之前写的不清楚,估计很难找到问题。其实是这样的。“GotoNRDE”不是一个简单的button,click它之后其实是调用了一个javascript。然后我猜想问题是出在页面加载JS上了。因为selenium在运行的时候会在回放的页面底部整合进两个frame,就是我们看selenium的控制台。但是当页面调用JS时,可能涉及到页面frame,如果这个JS写的不严谨的话,就可能找不到对应的frame,所以页面就出错了。
然后在运行selenium时把底部的frame给去掉就可以了。
不知道我说清楚了没有,总之如果大家遇到这样的问题可以这么试试。另外,我觉得其实可以的话,最好能建议SE把代码改一改。,毕竟你不能确定客户会在IE上加载什么。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-6-8 02:42 , Processed in 0.070312 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表