JAVA+selenium+testNG QQ邮箱登录及邮箱发送

本套自动化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.com");
             //给页面加载时间,避免未加载造成获取不到元素而报错
             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.com");
             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.com");
             
             //输入标题
             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>

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是使用JavaSeleniumTestNG编写登录网页测试案例的示例代码: ```java import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class LoginTest { private WebDriver driver; @BeforeClass public void setup() { // 设置ChromeDriver路径 System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); // 创建一个Chrome浏览器实例 driver = new ChromeDriver(); } @Test public void testLogin() { // 打开登录页面 driver.get("https://example.com/login"); // 输入用户名和密码 WebElement usernameField = driver.findElement(By.id("username")); WebElement passwordField = driver.findElement(By.id("password")); WebElement loginButton = driver.findElement(By.id("login-button")); usernameField.sendKeys("username"); passwordField.sendKeys("password"); // 点击登录按钮 loginButton.click(); // 验证登录是否成功 WebElement welcomeMessage = driver.findElement(By.id("welcome-message")); Assert.assertEquals(welcomeMessage.getText(), "欢迎回来!"); } @AfterClass public void teardown() { // 关闭浏览器 driver.quit(); } } ``` 这个测试案例使用Chrome浏览器打开一个登录页面,输入用户名和密码,然后点击登录按钮。接着,它验证登录是否成功,通过检查页面上的欢迎消息来实现。最后,它关闭浏览器。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值