51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

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

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

[复制链接]

该用户从未签到

41#
 楼主| 发表于 2008-12-22 09:44:37 | 只看该作者
好久没更新了,帖子沉的好快呀。自己顶一下
回复 支持 反对

使用道具 举报

该用户从未签到

42#
发表于 2008-12-23 09:15:28 | 只看该作者

问个问题

selenium是如何捕捉弹出窗口的?
PS,该弹出窗口没有id和name属性。。
回复 支持 反对

使用道具 举报

该用户从未签到

43#
 楼主| 发表于 2008-12-24 09:22:56 | 只看该作者
这个问题在openQA 论坛上也很热门的。经常有人问。
如果你的这个弹出窗口是有一个link产生的话,比较容易解决,简单的说一下步骤。。
1.selenium.openWindow("_blank","winid"); //开一个空的弹出窗口。
2.然后修改那个link的 target 属性为"winid"
3.然后click 这个link

不知道够不够详细。



原帖由 okle 于 2008-12-23 09:15 发表
selenium是如何捕捉弹出窗口的?
PS,该弹出窗口没有id和name属性。。
回复 支持 反对

使用道具 举报

该用户从未签到

44#
发表于 2008-12-29 15:01:24 | 只看该作者
我有一个 关于 selenium rc 的问题
现在我自己在研究 seleniu rc 但是找了一段时间的资料 但是没有找到 如何运行 selenium-php-client-driver-1.0-beta-1 中的实例
不知道你那是不是用一些关于 seleniu rc 等等学习资料 可供参考呢
回复 支持 反对

使用道具 举报

该用户从未签到

45#
 楼主| 发表于 2008-12-29 17:18:24 | 只看该作者
open source 的东西少的就是资料。我主要还是泡在openqa的论坛上。
另外我用的是java client
原帖由 alextowxm 于 2008-12-29 15:01 发表
我有一个 关于 selenium rc 的问题
现在我自己在研究 seleniu rc 但是找了一段时间的资料 但是没有找到 如何运行 selenium-php-client-driver-1.0-beta-1 中的实例
不知道你那是不是用一些关于 seleniu rc 等等学 ...
回复 支持 反对

使用道具 举报

该用户从未签到

46#
 楼主| 发表于 2009-1-4 10:49:21 | 只看该作者
2009年了。接触selenium 断断续续已经一年半多了。今年继续。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2015-12-1 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    47#
    发表于 2009-1-6 11:06:03 | 只看该作者
    我是新手 顶下先
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    48#
    发表于 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)
    这是哪里出了问题?谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    49#
    发表于 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)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    50#
     楼主| 发表于 2009-1-8 09:42:23 | 只看该作者
    selenium server 开了没?

    其实只需要导入 selenium-java-client.jar

    原帖由 nosedive 于 2009-1-7 15:36 发表
    楼主,请教你一个入门级的问题。我用selenium+eclipse+Junit.用selenuimIDE录好脚本,在eclipse里建好工程,项目属性中引入selenium-java-client.jar selenium-java-client-driver-sources.jar和selenium-java-clien ...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    51#
    发表于 2009-1-8 10:28:28 | 只看该作者
    server开了,确实只用导入selenium-java-client-driver.jar的,我是病急乱投医,不过还是不行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    52#
     楼主| 发表于 2009-1-8 12:41:16 | 只看该作者
    代码贴上来看看。
    原帖由 nosedive 于 2009-1-8 10:28 发表
    server开了,确实只用导入selenium-java-client-driver.jar的,我是病急乱投医,不过还是不行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    53#
    发表于 2009-1-8 13:56:54 | 只看该作者
    你的错误证明你的sever根本没开起来!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    54#
    发表于 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());
        }
    }
    这个脚本在别人的机器上跑是正常的,所以我想应该脚本没有什么问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    55#
    发表于 2009-1-8 14:31:39 | 只看该作者
    大家好,我刚刚用selenium IDE 出现了些问题,也是关于网页加载的问题,我一般都是在每个click前门加 wait for element present 这条命令,但是对有些按键似乎不管用,所以我加了pause 这个命令,来延长等待时间,但是我发现,我做的脚本文件在我的电脑上运行可以,但是换台电脑就会出现问题,我测试的网页是Ajax技术的,所以加载网页就会出现问题,关键是加pause这个命令,不清楚具体的等待时间,所以我想用wait for value ,或者 wait for condition 这样的命令,但是具体的格式并不是很清楚,网上也查了,不是很清楚wait for value 这个命令中patten 应该写些什么东西,对于wait for condition 这个命令中的script不是很了解,关键我刚刚毕业,而且本科不是学计算机专业的,没有接触过javascript ,各位大侠可以给我举个例子吗,例如我想等待一个id为OKButton__Button 的按键 ,wait for condition 和 wait for value这两个命令具体该怎么写,多谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    56#
     楼主| 发表于 2009-1-8 14:59:21 | 只看该作者
    把你下面这段代码里的 "localhost" 改成别人运行正常的机器名。然后运行试试。

    selenium = new DefaultSelenium("localhost", 4444, "*firefox", url);  //4444 is default server port

    如果可以跑说明你 selenium server 有问题。


    原帖由 nosedive 于 2009-1-8 14:11 发表
    import junit.framework.TestCase;
    import com.thoughtworks.selenium.*;
    public class Test extends TestCase {
        private Selenium selenium;

        public void setUp() throws Exception {
            Strin ...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57#
     楼主| 发表于 2009-1-8 15:04:44 | 只看该作者

    回复 55# 的帖子

    一般用的较多的是wait for present,
    一个wait for visible 的例子。/**Wait for element to be visible within time out.
          * @param sLocator element's locator
          * @param timeout time out
          */
         public void waitForVisible(String sLocator, int timeout){
             log.info("Wait for "+sElementType+" visible");
             for(int i=0;;i++){
                if(i>=timeout){
                    try{
                        org.testng.Assert.fail("Wait for "+sElementType+" visible, Failed/Timeout @ "+sLocator);
                        }catch(AssertionError er){
                            log.error("Wait for "+sElementType+" visible, Failed/Timeout @ "+sLocator);
                            captureScreenshot();   
                            throw er;
                            }
                        }
                try {
                    if (sel.isVisible(sLocator)){
                        log.info("Wait for "+sElementType+" visible,OK");
                        break;
                        }
                    } catch (Exception e) {}
                try {
                    Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                        }
                    }
             }

    和一个  wait for value 例子
    public boolean waitForValueToPresent(String value,int timeout){
            log.info(this.sElementType + " waitForValueToPresent");
                    while(true){
                            if(timeout<0){
                                    return false;
                                    }
                            timeout--;
                            if(this.sel.getValue(this.sElementPath).equals(value)){
                                    return true;
                                    }else{
                                            try{
                                                    Thread.sleep(1000);
                                                    }catch(Exception e){
                                                            e.printStackTrace();
                                                            }
                                                    }
                            }
                    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

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

    使用道具 举报

    该用户从未签到

    59#
    发表于 2009-1-8 15:58:19 | 只看该作者

    回复 55# 的帖子

    我一般用waitForPageToLoad
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    60#
    发表于 2009-1-8 16:08:28 | 只看该作者

    回复 57# 的帖子

    很感谢bruce的回答,但是目前来讲,我现在只是刚刚接触到selenium IDE 这个软件,还没有涉及到编程方面的知识,而且现在来说问题主要是关于想找个一个可以取代pause的命令,网上看了一下waitforvalue这个命令可以,waitForValue(locator, pattern) ,但是是不是这个命令只有输入字符的时候可以使用,对于等待按键来说使用不了?谢谢
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-3 07:42 , Processed in 0.080500 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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