51Testing软件测试论坛

标题: Selenium入门问题 [打印本页]

作者: gaoqiu    时间: 2010-2-23 22:07
标题: Selenium入门问题
public void setUp() throws Exception {
           selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://www.baidu.com/");
           selenium.start();
    }
    public void testUntitled() throws Exception {
                selenium.open("/");
                selenium.type("kw", "selenium");
                selenium.click("su");
                selenium.waitForPageToLoad("30000");
                verifyTrue(selenium.isTextPresent("selenium_百度百科"));
                selenium.click("xpath=//table[@id='1']/tbody/tr/td/a");
    }

    public void tearDown() throws Exception {   
        selenium.stop();   
        super.tearDown();   
    }
代码就这么多,但是在运行到verifyTrue(selenium.isTextPresent("selenium_百度百科"));
的时候就运行不下去了,就算删掉这行,下一样也不运行,也不报错,有人可以帮忙指导下么?

谢谢回复,我这个就是一个做一个简单的测试例子,在firefox里面录制
(1)进入bairu
(2) 搜索selenium
(3) 点击搜索
(4) 点击第一个搜到的链接,会自己开个页面
想说一下在firefox里面回放以上4步,第4步回放不来,如果可以你也试试
然后变成java 放到eclipse里面执行,也是第4步回放不来

[ 本帖最后由 gaoqiu 于 2010-2-24 14:18 编辑 ]
作者: gaoqiu    时间: 2010-2-23 22:11
在IDE上运行也是,最后一步都不运行的
<?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="" />
<title>1</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">1</td></tr>
</thead><tbody>
<tr>
        <td>open</td>
        <td>/</td>
        <td></td>
</tr>
<tr>
        <td>type</td>
        <td>kw</td>
        <td>selenium</td>
</tr>
<tr>
        <td>clickAndWait</td>
        <td>su</td>
        <td></td>
</tr>
<tr>
        <td>click</td>
        <td>//table[@id='1']/tbody/tr/td/a</td>
        <td></td>
</tr>
</tbody></table>
</body>
</html>
作者: park_p    时间: 2010-2-24 09:10
你描述的运行不下去是什么意思啊?
能不能把运行时的情况贴图,或者把运行时控制台的打印信息copy到这里看下,你这样说不运行搞不清楚是selenium本身的问题,还是代码的问题造成,或者是别的什么原因,所以要提供更多的诊断信息啊~
作者: park_p    时间: 2010-2-24 09:16
才看到,你用的是iexplore浏览器,iexplore浏览器对xpath的支持很不好
建议你用firefox来测试看看"*firefox",是不是有同样问题出现
如果一定用iexplore浏览器,尽量少用xpath来识别元素,或者只写简单的xpath,不要写复杂的。不然就像你说的不运行要不就是死慢,你说的不运行可能就是因为太慢了,让你觉得不运行了,哈哈哈哈~~~~
iexplore浏览器建议用dom的方式提供元素的识别,所以javascript要熟点了,呵呵~~
最好还是用它自带的“id=xxxxx”或"name=xxxxx"或"link=xxxxxx"的方式,这样识别是比较快兼容性也比较好的我猜,呵呵
你代码里的//table[@id='1']/tbody/tr/td/a应该是个link,就用"link=链接的文本"来替换试试看啊
补充一点:ie浏览器在执行selenium.waitForPageToLoad("30000");这样的语句时有时也会有问题,如果不是全页面刷新的话,这个问题有遇到过,也请教过人,也不知道是什么原因造成的。

[ 本帖最后由 park_p 于 2010-2-24 09:19 编辑 ]
作者: gaoqiu    时间: 2010-2-24 14:17
谢谢楼上回复,我这个就是一个做一个简单的测试例子,在firefox里面录制
(1)进入bairu
(2) 搜索selenium
(3) 点击搜索
(4) 点击第一个搜到的链接,会自己开个页面
想说一下在firefox里面回放以上4步,第4步回放不来,如果可以你也试试
然后变成java 放到eclipse里面执行,也是第4步回放不来
作者: park_p    时间: 2010-2-24 15:22
被你说的我在本地跑了一遍代码,根本执行就是对的,第四步是执行了的。
你觉得执行不来是因为selenium做了点击搜索出的第一个链接动作就退出了,整个执行就结束了。你看不到执行结果而已,执行是正确的,我这里点击并打开了搜索到的第一个页面了。
你在selenium.click("xpath=//table[@id='1']/tbody/tr/td/a");这句后面加上Thread.sleep(10000);停个十秒钟,就看到selenium打开了搜索到的第一个页面,也就是正确执行了点击第一个链接的动作,你再试试吧~
作者: 小米啊    时间: 2010-2-25 10:01
我试了下,是可以跑的
  1. package com.test;

  2. import com.thoughtworks.selenium.SeleneseTestCase;

  3. public class Baidu  extends SeleneseTestCase{
  4.         public void setUp() throws Exception{
  5.                 setUp("http://www.baidu.com","*firefox D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  6.                 //System.out.println("data:"+data);
  7.         }
  8.        
  9.         public void testUntitled() throws Exception {
  10.         selenium.open("/");
  11.         selenium.type("kw", "selenium");
  12.         selenium.click("su");
  13.         selenium.waitForPageToLoad("30000");
  14.         
  15.         verifyTrue(selenium.isTextPresent("selenium_百度百科"));
  16.         selenium.click("xpath=//table[@id='1']/tbody/tr/td/a");
  17.         }

  18.         public void tearDown() throws Exception {   
  19.                 selenium.stop();   
  20.                 super.tearDown();   
  21.         }
  22. }
复制代码

作者: sudalice    时间: 2010-3-18 16:48
试了下,是OK的,一定要等新的页面完全出来再stop record
作者: mengxhzznode    时间: 2010-4-15 13:35
用你的HTML代码在火狐上试过了,可以运行,最后一步有警告而已。没大碍。
作者: mengxhzznode    时间: 2010-4-28 17:12

作者: mengxhzznode    时间: 2010-4-28 17:16

作者: mengxhzznode    时间: 2010-4-28 17:19

作者: guo24biao    时间: 2010-5-1 11:40
标题: 学习





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2