使用selenium自动发送QQ邮件(二)
来源:互联网 发布:北京外国语大学网络教 编辑:程序博客网 时间:2024/06/05 07:17
本自动化使用Junit4测试框架,写了五个自动化测试用例,代码篇幅有点长,我就每个测试用例分开讲解好了。
用例二:测试收件人数量为上限时是否能发送成功。预期结果:成功。
用例三:测试有收件人数量超过上限时是否能发送成功。预期结果:失败,并提示收件人过多
用例四:收件人为空时。预期结果:提示收件人为空
用例五:邮箱格式错误。预期结果:弹出提示。
首先是driver和MainPage对象作为全局变量,方便使用。
WebDriver driver = new FirefoxDriver();
MainPage mainpage;
然后是@Before部分,因为每次发送邮件都要进行登录,点击写信然后进入写信页面,所以将这些操作全部放在@Before中。登录后,需要等写信链接出现才能点击,所以在此使用了显示等待,重写了apply方法。
@Beforepublic void before(){driver.get("https://mail.qq.com/");WebDriverWait wait = new WebDriverWait(driver,10);wait.until(ExpectedConditions.invisibilityOfElementLocated(By.linkText("帐号密码登录")));LoginPage loginpage = new LoginPage(driver);loginpage.login("123456789", "*********"); //需要测试的自己写扣扣号啦~~~ try{ //等待主页面展示 wait.until(new ExpectedCondition<WebElement>(){ public WebElement apply(WebDriver d) { return d.findElement(By.linkText("写信")); } });} catch(NoSuchElementException e) { Assert.fail("进入写信页面失败"); e.printStackTrace(); } }
顺便先说下@After部分了,每次发送邮件完成后,driver基本上是停留在mainFrame中的,所以要先退出到主window中才能点击退出链接。
@Afterpublic void after(){//退出登录driver.switchTo().defaultContent();mainpage.logout();driver.quit();}
接下来就写几个用例来验证下这代码行不行得通了。
用例一:收信人为1位,且收信人邮箱存在,预期结果:发送成功。
@Testpublic void testUserByOne() {mainpage = new MainPage(driver);mainpage.toWrite();//写信ArrayList<String> users = new ArrayList();users.add("test@163.com;"); WriteLetter write = new WriteLetter(driver); write.writeLetter(users, "test", "hello,hcm"); try { WebElement sendinfomsg = (new WebDriverWait(driver,10)).until(new ExpectedCondition<WebElement>(){public WebElement apply(WebDriver d) { return d.findElement(By.id("sendinfomsg"));} });}catch(NoSuchElementException e){ Assert.fail("发送失败"); e.printStackTrace();} }
用例二:测试收件人数量为上限时是否能发送成功。预期结果:成功。
@Testpublic void testUsersLimit(){mainpage = new MainPage(driver);mainpage.toWrite();//假设收件人最多可以放30个ArrayList<String> users = new ArrayList();int num = 0;while(num<30){String mailbox = "forTest00"+num+"@111.com;";users.add(mailbox);num++;}WriteLetter write = new WriteLetter(driver);write.writeLetter(users, "test", "just test");try{WebElement sendinfomsg = (new WebDriverWait(driver,10)).until(new ExpectedCondition<WebElement>(){public WebElement apply(WebDriver d){return d.findElement(By.id("sendinfomsg"));}});}catch(NoSuchElementException e){Assert.fail("发送失败");e.printStackTrace();}}
用例三:测试有收件人数量超过上限时是否能发送成功。预期结果:失败,并提示收件人过多
@Testpublic void testUsersOverLimit(){mainpage = new MainPage(driver);mainpage.toWrite();//假设收件人最多可以放30个ArrayList<String> users = new ArrayList();int num = 0;while(num<50){String mailbox = "forTest00"+num+"@111.com;";users.add(mailbox);num++;}WriteLetter write = new WriteLetter(driver);write.writeLetter(users, "test", "just test");try{//展示错误信息的span是处于window窗口而不是frame窗口,所以driver要先回到window中才能定位到错误信息driver.switchTo().defaultContent();WebElement sendinfomsg = (new WebDriverWait(driver,10)).until(new ExpectedCondition<WebElement>(){public WebElement apply(WebDriver d){return d.findElement(By.className("errmsg"));}});Assert.assertEquals("收件人过多,请减少收件人数量", sendinfomsg.getText());}catch(NoSuchElementException e){Assert.fail("发送失败");e.printStackTrace();}}
用例四:收件人为空时。预期结果:提示收件人为空
@Testpublic void testUserEmpty(){mainpage = new MainPage(driver);mainpage.toWrite();ArrayList<String> users = new ArrayList();WriteLetter write = new WriteLetter(driver);write.writeLetter(users, "test", "just test");try{//展示错误信息的span是处于window窗口而不是frame窗口,所以driver要先回到window中才能定位到错误信息driver.switchTo().defaultContent();WebElement sendinfomsg = (new WebDriverWait(driver,10)).until(new ExpectedCondition<WebElement>(){public WebElement apply(WebDriver d){return d.findElement(By.className("errmsg"));}});Assert.assertEquals("请填写收件人后再发送", sendinfomsg.getText());}catch(NoSuchElementException e){Assert.fail("发送失败");e.printStackTrace();}}
用例五:邮箱格式错误。预期结果:弹出提示。
@Test public void testUserWrongAdress() { mainpage = new MainPage(driver); mainpage.toWrite(); ArrayList<String> users = new ArrayList(); users.add("ll@ll"); WriteLetter write = new WriteLetter(driver); write.writeLetter(users, "test", "just test"); try { //展示错误信息的span是处于window窗口而不是frame窗口,所以driver要先回到window中才能定位到错误信息 driver.switchTo().defaultContent(); WebElement sendinfomsg = (new WebDriverWait(driver,10)).until(new ExpectedCondition<WebElement>(){ public WebElement apply(WebDriver d) { return d.findElement(By.className("errmsg")); } }); Assert.assertEquals("地址错误,请重新填写", sendinfomsg.getText()); }catch(NoSuchElementException e){ Assert.fail("发送失败"); e.printStackTrace(); } }
阅读全文
0 0
- 使用selenium自动发送QQ邮件(二)
- 使用selenium自动发送QQ邮件(一)
- JAVA 使用QQ发送邮件
- 使用javamail发送qq邮件
- 使用qq邮箱发送邮件
- java使用qq发送邮件
- Selenium学习二——自动登陆163邮箱并发送邮件
- python3 发送邮件(二)(html)(qq)
- 使用Jmail自动发送邮件
- 使用python自动发送邮件
- 【笔记】Java Mail发送邮件(使用QQ邮箱)
- 使用JavaMail创建邮件和发送邮件(二)
- 通用邮件自动发送Winform控件开发(二)
- [selenium]实现自动登录163邮箱并发送邮件
- python使用qq服务器发送邮件
- Spring 框架使用QQ邮箱发送邮件
- 使用Java实现QQ邮件的发送
- Laravel5使用QQ邮箱发送邮件配置
- Excel35招必学秘技
- ②NuPlayer播放框架之ALooper-AHandler-AMessage底层机制分析
- Linux网络流媒体服务器的核心代码揭秘
- 给初学者的RxJava2.0教程(二)
- Cocoapods创建私有库
- 使用selenium自动发送QQ邮件(二)
- 虚拟机的linux有网卡无驱动不能联网的解决方法
- CGI编程读书笔记
- 51nod:加农炮(线段树+单调性)
- git更新服务器地址Mac版sourceTree问题
- Android中ContextMenu的使用方法
- pic之I2C设置
- retrofit的简单笔记
- 如何利用缺陷的管理提高软件开发质量四——缺陷分析简介