51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7644|回复: 31
打印 上一主题 下一主题

找高手解决 selenium rc 的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-15 15:12:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在测的时候 打开一个新页面,填写文本时总出错。 不知道哪里的原因,java代码如下,可以运行下帮我找下原因,我初学。
import com.thoughtworks.selenium.SeleneseTestCase;

public class Addcustomer extends SeleneseTestCase{
    public void testUntitled() throws Exception {
            selenium.open("http://purple-dev/bugfree/Login.php");
                selenium.type("TestUserName", "wangxiangyong");
                selenium.type("TestUserPWD", "123456");
                selenium.click("SubmitLoginBTN");
                selenium.waitForPageToLoad("3000");
       
                selenium.selectFrame("NavFrame");
                selenium.click("OpenBug");
               
                selenium.selectFrame("relative=up");
                selenium.type("BugTitle", "test1");
                selenium.selectFrame("NavFrame");
                selenium.click("link=[退出]");
                selenium.waitForPageToLoad("30000");

}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

32#
发表于 2010-4-20 18:10:02 | 只看该作者
我现在刚开始学习使用selenium RC ,遇到同样的问题了,感谢楼主及各位参与讨论的大侠,折腾了一天的问题终于解决了
回复 支持 反对

使用道具 举报

该用户从未签到

31#
发表于 2009-12-17 16:24:59 | 只看该作者
呵呵,不太清楚,那可能你这个window是包含在frame里的,不过也挺奇怪的,不管怎么样,好了就行
回复 支持 反对

使用道具 举报

该用户从未签到

30#
 楼主| 发表于 2009-12-17 12:44:41 | 只看该作者
不行的 一去掉 就不行。昨天弄了一天都不行的,我还以为是窗口ID 弄错了。刚才我也试过了  必须2个一起用。返回原来的主窗口 只用selectwindow  就可以,很奇怪。
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2009-12-17 12:24:43 | 只看该作者
我觉得你不用selectframe直接selectwidnow就可以了
回复 支持 反对

使用道具 举报

该用户从未签到

28#
 楼主| 发表于 2009-12-17 11:39:34 | 只看该作者
终于解决了啊。
selenium.selectFrame("NavFrame");
                selenium.click("OpenBug");
                Thread.sleep(3000); /*加了这条

               
                selenium.selectFrame("relative=up");/加了这个
                selenium.selectWindow("新建 Bug");/*光加这句 还不行
                                selenium.type("BugTitle","test1");

是Thread.sleep(3000); 还是selenium.selectFrame("relative=up");  起了作用? 刚才屏蔽了Thread.sleep(3000);  可以运行成功了.屏蔽selenium.selectFrame("relative=up");  就失败了 。
谁能解释 刚开始我的错误在哪里。为什么要先selectFrame再selectwindow  两个都需要?

[ 本帖最后由 linyucc 于 2009-12-17 11:57 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

27#
 楼主| 发表于 2009-12-17 11:19:20 | 只看该作者
下面是我用selenium IDE 录的脚本
HTML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://purple-dev/" />
<title>New Test</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">New Test</td></tr>
</thead><tbody>
<tr>
        <td>open</td>
        <td>/bugfree/Login.php</td>
        <td></td>
</tr>
<tr>
        <td>type</td>
        <td>TestUserName</td>
        <td>wangxiangyong</td>
</tr>
<tr>
        <td>type</td>
        <td>TestUserPWD</td>
        <td>123456</td>
</tr>
<tr>
        <td>clickAndWait</td>
        <td>SubmitLoginBTN</td>
        <td></td>
</tr>
<tr>
        <td>selectFrame</td>
        <td>NavFrame</td>
        <td></td>
</tr>
<tr>
        <td>click</td>
        <td>OpenBug</td>
        <td></td>
</tr>
<tr>
        <td>selectFrame</td>
        <td>relative=up</td>
        <td></td>
</tr>
<tr>
        <td>type</td>
        <td>BugTitle</td>
        <td>test1</td>
</tr>

</tbody></table>
</body>
</html>


JAVA的
package com.example.tests;

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

public class Untitled extends SeleneseTestCase {
        public void setUp() throws Exception {
                setUp("http://purple-dev/", "*chrome");
        }
        public void testUntitled() throws Exception {
                selenium.open("/bugfree/Login.php");
                selenium.type("TestUserName", "wangxiangyong");
                selenium.type("TestUserPWD", "123456");
                selenium.click("SubmitLoginBTN");
                selenium.waitForPageToLoad("30000");
                selenium.selectFrame("NavFrame");
                selenium.click("OpenBug");
                selenium.selectFrame("relative=up");
                selenium.type("BugTitle", "test1");
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

26#
 楼主| 发表于 2009-12-17 11:13:37 | 只看该作者
selectwindow  后面要跟一个 窗口名  是不是就是 title  图里面的“新建bug”?我用了  还是不行。

[ 本帖最后由 linyucc 于 2009-12-17 11:24 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2009-12-16 19:20:50 | 只看该作者
或者你不要selectframe了,直接selectwindow,选择你新打开的这个页面,然后直接执行type
selectwindow怎么用的话,你可以看你那个selenium类的源程序里,应该有的

[ 本帖最后由 afeng 于 2009-12-16 19:22 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2009-12-16 19:15:31 | 只看该作者
或者你有没有搞错frame的id
我看你selenium.selectFrame("relative=up");这句是执行正确的
会不会搞错frame了,buttitle确实不在relative=up里,你再仔细看看
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2009-12-16 19:00:09 | 只看该作者
你在open那个bug页面的语句后面加一句thread.sleep(3000)
可能是selenium语句已经执行了,但页面还没有完全打开造成的,这样试试看,不行再想其他办法
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2009-12-16 16:57:01 | 只看该作者
有api可以查的啊,在click弹出窗口的时候,看看html里或js里有没有给这个窗口命名,参数就是那个名字,查看api吧,里面有说明的
回复 支持 反对

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2009-12-16 16:19:50 | 只看该作者
麻烦各位大侠了
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2009-12-16 16:19:33 | 只看该作者
selectwindow  怎么用?
selenium.selectWindow("");    ??
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2009-12-16 15:41:09 | 只看该作者
我晕,你这是点击后弹出了新页面,你把firefox设置成每次打开用新窗口,你就会看到你打开了一个新ff浏览器了,你要selectWindow到那个打开的新ff浏览器窗口,然后在进行操作,而不是selectFrame,它不是个frame。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2009-12-16 15:34:02 | 只看该作者
~~~It seems that 我的猜测是对的!~:
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2009-12-16 15:13:54 | 只看该作者
现在确定是 frame 没有抓到。
是点了按钮后 打开第2个页面时 抓不到frame,我看了第2个页面的源代码 没有frame。见附件2
附件1 是第1个页面的代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2009-12-16 13:50:06 | 只看该作者
补充一下:selectFrame(“BugMain”)有没这个Frame我不知道,因为看不全你的页面,但是就像shanxi所说的,如果没有所谓的main Frame你就select回openbug所在的那个Frame试试看,这个Frame应该有的,但这里看不出它的名称。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2009-12-16 13:44:22 | 只看该作者
贴了不少,但是还是看不清页面结构,你自己可以用firebug查看页面看看,到底如何结构,如果这个就是你的页面,你可以试试selenium.selectFrame("relative=top"); 然后在做type,如果id是唯一的,selenium应该能找到,如果是在这个页面内的话。否则就用firebug查看明确这个input所在的frame的id或者name,在select过去,试试看。
如果页面显示的所谓frame实际都是div来实现的话,应该不用做selectframe的操作,用id或xpath就可以操作元素了。嵌套iframe的话就有点麻烦。解决你这问题,最好是能在你的测试环境下进行调试,这个只有你自己多试试了。
从你的代码猜测:你有selectFrame(“NavFrame”),应该是导航条Frame的话,那你在selenium.selectFrame("relative=up")或selenium.selectFrame("relative=top")后,在加一句selectFrame(“BugMain”);,然后在type操作试试看。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2009-12-16 13:35:44 | 只看该作者
楼上的意思不明白,能详细点吗
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 02:35 , Processed in 0.086232 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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