admin管理员组文章数量:1640022
本套自动化ui是基于java+selenium+testNG。
涉及到frame的切换,xpath的定位,页面标签分析。Testng执行的先后顺序。
QQ邮箱登录;
用谷歌打开qq邮箱登录页面F12打开查看里面的内容;
从上面的两张截图可以看出来 微信登录与qq登录所要找的iframe的id是一样的,所以
1.登录前必须先点击QQ登录,然后切到id为login_frame 的iframe页面中
2.找到输入用户名与密码的标签,根据id获取到并运用sendKeys输入,找到登录按钮点击登录
下面是新建一个maven项目,配置好pom文件:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.9.1</version>
</dependency>
新建testNG类,用@BeforeClass来注解,只要此测试类运行必须先运行它。
源码
public class Qlogin {
WebDriver webDriver =null;
@BeforeClass
public void login() {
File file = new File("D:\\driver\\chromedriver.exe");
System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
webDriver = new ChromeDriver();
try {
//获取qq邮箱连接
webDriver.get("https://mail.qq");
//给页面加载时间,避免未加载造成获取不到元素而报错
Thread.sleep(5000);
//登录页面查看一下是一个frame页面,需要切入
webDriver.findElement(By.id("qqLoginTab"));
//设置睡眠时间,本人电脑比较慢所以有时候会响应不到
Thread.sleep(2000);
webDriver.switchTo().frame("login_frame");
//通过id获取邮箱的登录名文本框,运用senkeys进行输入
webDriver.findElement(By.id("u")).sendKeys("*******@qq");
webDriver.findElement(By.id("p")).sendKeys("*********");
//运用click进行点击操作
webDriver.findElement(By.id("login_button")).click();
Thread.sleep(2000);
}catch (Exception e){
//因为webdriver还需要用所以没有finally处理
webDriver.quit();
System.out.println("邮箱登录异常运行异常");
}
}
注意在新手调试时一点要try,catch,不然进程会n多个。
**
发送邮箱
**
老套路先看页面源码
1.找到写信的所在的标签,看到该标签与其他iframe平级的,主iframe的ID为(mainFrame)进行选择页面切入并获取该标签用click进行点击操作模拟
切入iframe的ID为(mainFrame)的页面,括号中可以为id,class的String类型的value,也可以是一个webElement类型的对象:
webDriver.switchTo().frame("mainFrame");
2.页面跳转后用同样的方法查询到“普通邮件”,“收件人”,“主题”,以及“添加附件”操作都在已切换的页面中就不用再次选择iframe页面了。
3.特别注意正文是一个子iframe所以在输入正文是一定要先切入子frame表单看下图:
4.切入子页面完成正文输入后一定要切回原来父iframe:
//切入子iframe页面
webDriver.switchTo().frame(webDriver.findElement(By.className("qmEditorIfrmEditArea")));
//切回父页面
webDriver.switchTo().parentFrame();
5.进行发送操作,
发送成功后,通过页面内容确认是否发送成功
获取标签文本内容:
String value = webDriver.findElement(By.xpath("//*[@id=\"sendinfomsg\"]")).getText();
运用testNG 的Assert方法来比较是否满足预期值:
Assert.assertEquals("您的邮件已发送", value);
最后运行完毕一定要finally 关闭webdriver
下面是已经运行成功的源码:
@Test
public void writeMil(){
try {
//登录成功等待页面加载3秒
Thread.sleep(3000);
//通过xpath点击写信
webDriver.findElement(By.id("composebtn")).click();
//等待页面加载1秒
Thread.sleep(1000);
//通过页面元素发现该页面有不止一个iframe表单,进入要操作的页面
webDriver.switchTo().frame("mainFrame");
//选择普通邮件
webDriver.findElement(By.xpath("//*[@id=\"frm\"]/table/tbody/tr/td[1]/div[2]/div")).click();
Thread.sleep(2000);
//输入要发送邮箱的地址
webDriver.findElement(By.xpath("//*[@id=\"toAreaCtrl\"]/div[2]/input")).sendKeys("********@qq");
//输入标题
webDriver.findElement(By.id("subject")).sendKeys("testSelenium");
//运用sendKeys添加附件
webDriver.findElement(By.xpath("//[@id=\"AttachFrame\"]/span/input")).sendKeys("C://Users\\Lenovo\\Desktop\\selenium学习心得.docx");
Thread.sleep(1000);
//正文在另外一个iframe下 所以需要切换iframe
webDriver.switchTo().frame(webDriver.findElement(By.className("qmEditorIfrmEditArea")));
//输入正文信息
webDriver.findElement(By.tagName("body")).sendKeys("要发送一个邮箱请注意查收");
//跳转到原iframe表单
webDriver.switchTo().parentFrame();
//点击发送
webDriver.findElement(By.xpath("//*[@id='toolbar']/div/a[1]")).click();
//等待页面加载发送成功页面
Thread.sleep(5000);
//切入发送成功iframe页面
webDriver.findElement(By.xpath("//*[@id=\"sendinfomsg\"]"));
//获取页面发送成功的关键信息
String value = webDriver.findElement(By.xpath("//*[@id=\"sendinfomsg\"]")).getText();
System.out.println(value);
//判断邮箱是否发送成功
Assert.assertEquals("您的邮件已发送", value);
}catch (Exception E){
//异常关闭
webDriver.quit();
System.out.println("邮箱发送运行异常");
}finally {
//运行完毕进行关闭
webDriver.quit();
}
}
可以右键直接运行该test,当写的测试类多的时候也可以通过testNG的xml进行配置后运行:
testNG的xml的demo;
<?xml version="1.0" encoding="UTF-8"?>
<suite name="qqMile">
<test name="TestqqMile">
<classes name ="发送邮箱">
<class
name="qqlogin.Qlogin">
</class>
</classes>
</test>
</suite>
运行结果:
版权声明:本文标题:JAVA+selenium+testNGQQ邮箱登录及邮箱发送 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729305084a1195009.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论