51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2104|回复: 3
打印 上一主题 下一主题

新人求助:selenium ide 自动运行脚本到一个节点失败终止,然后手动运行却是正常的

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-8-21 14:47:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:<tr>
    <td>click</td>
    <td>xpath=(//a[contains(text(),'处理')])[2]</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td></td>
    <td>30000</td>
</tr>
<tr>
    <td>clickAt</td>
    <td>xpath=html/body/div[2]/div[2]/div/div[1]/div/div[4]/table/tbody/tr[1]/td[1]</td>
    <td></td>

我希望的操作是点击“处理”按钮后进入一个处理界面,然后鼠标选取xpath=html/body/div[2]/div[2]/div/div[1]/div/div[4]/table/tbody/tr[1]/td[1]的地方然后再进行下一步操作。但是在运行脚本的时候每到这里都是提示
  • [error] Element xpath=html/body/div[2]/div[2]/div/div[1]/div/div[4]/table/tbody/tr[1]/td[1] not found
  • [error] current test case not found
  • [info] Test suite completed: 1 played, 1 failed
然后脚本停止,这时如果手动点击运行失败的这个脚本马上就成功。不是延迟之类的问题,我试过在这个操作前加入了pause  10000。依然运行脚本时在这里会失败,马上失败马上手动再运行一次就依然是成功的,期待高手解答

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

使用道具 举报

该用户从未签到

2#
发表于 2015-8-21 15:08:05 | 只看该作者
用IDE录制,很多会不成功。 与其用录制方式获得脚本节约时间,不如好好自己编写脚本, 可能会更节约时间。

开始回答问题。
waitForPopUp  看来是弹出了一个页面。
对于弹出的页面,需要去获取,要不然还在原来页面,当然找不到xpath=html/body/div[2]/div[2]/div/div[1]/div/div[4]/table/tbody/tr[1]/td[1] 这个元素。

至于如何修改录制的脚本,我没有经验。
自己编写脚本,是根据窗口句柄或者窗口标题。


String currentWindow = webtest.wd.getWindowHandle();//获取当前窗口句柄
        Set<String> handles = webtest.wd.getWindowHandles();//获取所有窗口句柄
        Iterator<String> it = handles.iterator();
        
        while (it.hasNext())
        {               
                if (currentWindow == it.next())
                {
                        continue;
                }
                webtest.wd.switchTo().window(it.next());//切换到新窗口
                webtest.wd.manage().window().maximize();  //窗口最大化
                //System.out.println(webtest.wd.getCurrentUrl());               
        }
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2015-8-21 15:48:57 | 只看该作者
对了,上面这个代码不够严谨, 不知道有人看出来没有?
上面的代码,是仅有一个主窗口,再弹出一个, 总共2个窗口的情况下。
要严谨的话,还需根据 title 、url等去匹配需要找的窗口。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2015-8-21 16:04:37 | 只看该作者
比如我目前的窗口A    URL是: http://www.test.com/
这里有一条记录,点击之后到新的窗口B,URL是: http://www.test.com/index.html#msg/detail?event_id=148
我要去窗口B操作,定位窗口过程::


        Set<String> handles = webtest.wd.getWindowHandles();//获取所有窗口句柄
        Iterator<String> it = handles.iterator();
        
        while (it.hasNext())
        {
                String handle=it.next();
                webtest.wd.switchTo().window(handle);
                String url=webtest.wd.getCurrentUrl();
                String idUrl="detail?event_id="+eventID;
                if (url.contains(idUrl))
                {
                        webtest.wd.manage().window().maximize();
                        break;
                }
        }
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-14 18:33 , Processed in 0.068510 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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