一说到自动化实现文件按上传操作,也许很多人就头疼。
Holmos在HolmosWindow类下提供了2个非常简单的静态方法如下:
1.upLoad(java.lang.String windowTitle,java.lang.String localFilePath)
需要传入2个参数,WindowTitle表示点击上传弹出窗口的名字(如下图画红圈处);localFilePath表示文件的路径,该文件必须存在。

Holmos在HolmosWindow类下提供了2个非常简单的静态方法如下:
1.upLoad(java.lang.String windowTitle,java.lang.String localFilePath)
需要传入2个参数,WindowTitle表示点击上传弹出窗口的名字(如下图画红圈处);localFilePath表示文件的路径,该文件必须存在。
2.upLoad(java.lang.String localFilePath) 这个方法默认窗口的title为“文件上传”
下面直接看个QQ邮箱发邮件添加附件例子:
新建个Page类(这里我们只测试个上传所以我们就把所有需要操作的元素都放一个类文件里面,平时测试建议还是一个页面一个类文件,方便管理)我们就取名为QQmail,具体代码如下:
下面直接看个QQ邮箱发邮件添加附件例子:
新建个Page类(这里我们只测试个上传所以我们就把所有需要操作的元素都放一个类文件里面,平时测试建议还是一个页面一个类文件,方便管理)我们就取名为QQmail,具体代码如下:
import com.holmos.webtest.element.Button;
import com.holmos.webtest.struct.Frame;
import com.holmos.webtest.struct.Page;
public class QQmail extends Page {
public QQmail() {
super();
this.comment = "QQ邮箱页面";
init();
}
/**
* 登陆页面
*
* 我们默认为本地已经登陆了QQ客户端只需点击快速登陆变可以登陆成功所以我们只定位快速登陆按钮
*
* 通过Html查看我们发现按钮是在iFrame里面,所以我们得先定位iFrame,再定位iFrame里面的元素
*
* 关于iFrame内元素定位方法,可以查看之前写的《iFrame里面元素的定位》
*/
// 先定位Frame
public iFrameLogin frame_login = new iFrameLogin("iframe");
{
frame_login.addIDlocator("xui");// frame通过ID定位
}
// 定位Frame里面的元素
public class iFrameLogin extends Frame {
public iFrameLogin(String comment) {
super(comment);
}
public Button login_BT = new Button("快速登陆");
{
login_BT.addIDLocator("loginbtn");// 采用ID定位快速登陆按钮
}
}
/**
* 下面对”写信“按钮定位
*/
public Button writeMail_BT = new Button("写信");
{
writeMail_BT.addIDLocator("composebtn");// 写信按钮用ID定位方式
}
/**
* 通过对原码观察我们发现添加附件按钮也在一个ID明为mainFrame的iframe内,同样进行而外处理
*/
// 先定位Frame
public mainFrame frame_main = new mainFrame("Mainiframe");
{
frame_main.addIDlocator("mainFrame");// frame通过ID定位
}
// 定位Frame里面的元素
public class mainFrame extends Frame {
public mainFrame(String comment) {
super(comment);
}
public Button addAttachment_BT = new Button("添加附件");
{
addAttachment_BT.addXpathLocator("html/body/form[2]/div[3]/div[4]/span[2]/span[1]/span/span[1]/embed");
}
}
}2.新建个Test类,我这里就命名为QQmain_Test,详细代码如下:
import org.junit.Test;
import com.holmos.webtest.EngineType;
import com.holmos.webtest.utils.HolmosBaseUtils;
import com.holmos.webtest.utils.HolmosWindow;
public class QQmail_Test {
public QQmail mail = new QQmail();
@Test
public void writeMail() {
HolmosWindow.openNewWindow(EngineType.WebDriverChrome, "http://mail.qq.com");// 用chrome打开QQ邮箱登陆页
mail.frame_login.select();// 把控制权交与登陆的iFrame
mail.frame_login.login_BT.clickAndWaitForLoad();// 点击快速登陆按钮
mail.frame_login.selectTopPage();// 控制权交还个最上层页面
mail.writeMail_BT.click();// 点击写信按钮
HolmosBaseUtils.sleep(3000);// 等待3秒钟加载,如果网络慢可适当延长等待时间
mail.frame_main.select();// 把控制权交与mainFrame
mail.frame_main.addAttachment_BT.click();// 点击添加附录
HolmosWindow.upLoad("打开", "D:\\huangshijin\\Pictures\\壁纸纯色.jpg");// chrome打开的title为”打开“,不同浏览器可能不用,并传入上传文件的地址
mail.frame_main.selectTopPage();// 把控制权交还给最上层页面
}
}
3.运行结果,直接可以看到如下图:
OK 搞定,写完发现写这个上传的例子可以顺便把iFrame的用法也好好熟悉下。
本文介绍了使用Holmos工具自动化实现文件上传操作的方法,包括如何使用其提供的静态方法upLoad来上传文件,并通过实例展示了如何在发送邮件时添加附件。
532

被折叠的 条评论
为什么被折叠?



