51Testing软件测试论坛
标题:
新人求助:selenium ide 自动运行脚本到一个节点失败终止,然后手动运行却是正常的
[打印本页]
作者:
tf303995
时间:
2015-8-21 14:47
标题:
新人求助:selenium ide 自动运行脚本到一个节点失败终止,然后手动运行却是正常的
代码如下:<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。依然运行脚本时在这里会失败,马上失败马上手动再运行一次就依然是成功的,期待高手解答
作者:
krush008
时间:
2015-8-21 15:08
用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());
}
作者:
krush008
时间:
2015-8-21 15:48
对了,上面这个代码不够严谨, 不知道有人看出来没有?
上面的代码,是仅有一个主窗口,再弹出一个, 总共2个窗口的情况下。
要严谨的话,还需根据 title 、url等去匹配需要找的窗口。
作者:
krush008
时间:
2015-8-21 16:04
比如我目前的窗口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;
}
}
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2