新人求助:selenium ide 自动运行脚本到一个节点失败终止,然后手动运行却是正常的
代码如下:<tr><td>click</td>
<td>xpath=(//a)</td>
<td></td>
</tr>
<tr>
<td>waitForPopUp</td>
<td></td>
<td>30000</td>
</tr>
<tr>
<td>clickAt</td>
<td>xpath=html/body/div/div/div/div/div/div/table/tbody/tr/td</td>
<td></td>
我希望的操作是点击“处理”按钮后进入一个处理界面,然后鼠标选取xpath=html/body/div/div/div/div/div/div/table/tbody/tr/td的地方然后再进行下一步操作。但是在运行脚本的时候每到这里都是提示
[*] Element xpath=html/body/div/div/div/div/div/div/table/tbody/tr/td not found
[*] current test case not found
[*] Test suite completed: 1 played, 1 failed
然后脚本停止,这时如果手动点击运行失败的这个脚本马上就成功。不是延迟之类的问题,我试过在这个操作前加入了pause10000。依然运行脚本时在这里会失败,马上失败马上手动再运行一次就依然是成功的,期待高手解答
用IDE录制,很多会不成功。 与其用录制方式获得脚本节约时间,不如好好自己编写脚本, 可能会更节约时间。
开始回答问题。
waitForPopUp看来是弹出了一个页面。
对于弹出的页面,需要去获取,要不然还在原来页面,当然找不到xpath=html/body/div/div/div/div/div/div/table/tbody/tr/td 这个元素。
至于如何修改录制的脚本,我没有经验。
自己编写脚本,是根据窗口句柄或者窗口标题。
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());
} 对了,上面这个代码不够严谨, 不知道有人看出来没有?
上面的代码,是仅有一个主窗口,再弹出一个, 总共2个窗口的情况下。
要严谨的话,还需根据 title 、url等去匹配需要找的窗口。 比如我目前的窗口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]