您的位置:首页 > 其它

Holmos自动化测试入门学习(九)------用新开浏览器方式后页面元素的操作

2013-08-13 14:41 507 查看
平时测试经常碰到这么一个场景,例如点击了查询,查询结果在新浏览器页面打开,这时我们得在新开浏览器中操作,
就得把控制权交与新开的浏览器,那又如何把控制权交给新开的浏览器页面呢?Holmos封装了如下方法:



从我个人平时使用来看,最长用过的是attach()和attachByTitle()方法,所以直接用这2个写个例子。
我们以IE下进行百度搜索到搜索结果页这么一个操作。在看代码之前先设置下IE,我这边以IE8为例,
再选项卡设置中勾选“始终在新窗口中打开弹出的窗口”,如下图:





1.设置完后,新建Page页面,这边就还是命名为Baidu.java,具体代码如下:
import com.holmos.webtest.element.Button;
import com.holmos.webtest.element.TextField;
import com.holmos.webtest.struct.Page;

public class Baidu extends Page {
public Baidu() {
super();
this.comment = "百度首页";
this.init();
}

public TextField text_TF = new TextField( "百度文本框" );
{
text_TF.addIDLocator("kw" );
text_TF.addNameLocator("wd" );
}

public Button baidu_BT = new Button( "百度一下" );
{
baidu_BT.addIDLocator("su" );
baidu_BT.addAttributeLocator("value" , "百度一下");
}
}

2.新建个Test类,实现输入关键字点击搜索,然后把控制权交与搜索页面。
import org.junit.Test;

import com.holmos.webtest.EngineType;
import com.holmos.webtest.utils.HolmosWindow;

public class Baidu_Test {
public Baidu baidu =new Baidu();

@Test
public void attachTest(){
HolmosWindow. openNewWindow(EngineType.WebDriverIE, "Http://www.baidu.com" );
System.out.println( "获得控制权的页面地址" +HolmosWindow.getUrl ());// 获取当前的url
baidu.text_TF .setText("holmos");
baidu.baidu_BT .clickAndWaitForLoad();
// 把控制权交给搜索结果页
HolmosWindow. attach("http://www.baidu.com/s?wd=holmos&rsv_bp=0&ch=&tn=baidu&bar=&rsv_spt=3&ie=utf-8&rsv_sug3=1&rsv_sug1=1&rsv_sug4=238&inputT=3807" );
System.out.println( "获得控制权的页面地址" +HolmosWindow.getUrl ());// 获取当前的url
HolmosWindow. closeAllWindows();
}

运行结果,我们查看logo发现前后两次获取的url不同:



同样做个对比,如果去掉控制权交给搜索结果页的代码结果会是什么样:
@Test
public void attachTest (){
HolmosWindow. openNewWindow(EngineType.WebDriverIE, "Http://www.baidu.com" );
System. out.println("获得控制权的页面地址" +HolmosWindow.getUrl ());// 获取当前的url
baidu.text_TF .setText("holmos");
baidu.baidu_BT .clickAndWaitForLoad();
System. out.println("获得控制权的页面地址" +HolmosWindow.getUrl ());// 获取当前的url
HolmosWindow. closeAllWindows();
}

运行结果:



很明显,去掉了控制权交予的代码,前后获取到的都是百度首页的url,无法对搜索结果页面操作。

上面例子是通过url方式交予控制权,下面以attachByTitle方式把控制权交予对应titile的页面:

@Test
public void attachByTitleTest (){
HolmosWindow. openNewWindow(EngineType.WebDriverIE, "Http://www.baidu.com" );
System. out.println("获得控制权的页面title:" +HolmosWindow.getTitle ());// 获取当前的 title
baidu.text_TF .setText("holmos");
baidu.baidu_BT .clickAndWaitForLoad();
// 把控制权交给搜索结果页
HolmosWindow. attachByTitle("holmos_百度搜索");
System. out.println("获得控制权的页面title:" +HolmosWindow.getTitle ());// 获取当前的 title
HolmosWindow. closeAllWindows();
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐