tf303995 发表于 2015-8-21 14:47:09

新人求助: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。依然运行脚本时在这里会失败,马上失败马上手动再运行一次就依然是成功的,期待高手解答

krush008 发表于 2015-8-21 15:08:05

用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());             
      }

krush008 发表于 2015-8-21 15:48:57

对了,上面这个代码不够严谨, 不知道有人看出来没有?
上面的代码,是仅有一个主窗口,再弹出一个, 总共2个窗口的情况下。
要严谨的话,还需根据 title 、url等去匹配需要找的窗口。

krush008 发表于 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]
查看完整版本: 新人求助:selenium ide 自动运行脚本到一个节点失败终止,然后手动运行却是正常的