2020全国大学生软件测试大赛决赛总结
功能测试(主要针对该部分总结)
测试需求
下面是这次功能测试的对应代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
public class Example {
// Mooctest Selenium Example
// <!> Check if selenium-standalone.jar is added to build path.
public static void test(WebDriver driver) throws InterruptedException {
// TODO Test script
// eg:driver.get("https://www.baidu.com/")
// eg:driver.findElement(By.id("wd"));
driver.get("http://www.asll.net/");
Thread.sleep(2000);
driver.manage().window().maximize();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[1]/header/div[3]/nav/div/div[2]/div/ul/li[3]/a")).click();
Thread.sleep(1000);
//跳转新页面2
String handle1 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle2 : driver.getWindowHandles()) {
if (handle2.equals(handle1))
continue;
driver.switchTo().window(handle2);
}
driver.findElement(By.xpath("/html/body/div[1]/div/header/div[3]/nav/div/div[2]/div/ul/li[4]/a")).click();
Thread.sleep(1000);
String handle2 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle3 : driver.getWindowHandles()) {
if (handle3.equals(handle2))
continue;
driver.switchTo().window(handle3);
}
//左右滑动
driver.findElement(By.xpath("/html/body/div[1]/div/section[3]/div/div/div/div[1]/div/div[2]/div/div[1]")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div/section[3]/div/div/div/div[1]/div/div[2]/div/div[2]")).click();
Thread.sleep(3000);
//第一篇博客(由于这边每位选手成功提交后会发生相应变化,所以这边可以注释掉,手动点击)
// driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div/div/div/div/article[1]/div[2]/h4/a")).click();
// Thread.sleep(2000);
String handle3 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle4 : driver.getWindowHandles()) {
if (handle4.equals(handle3))
continue;
driver.switchTo().window(handle4);
}
driver.findElement(By.xpath("/html/body/div[1]/div/main/div/div/aside/aside/div/div[1]/div[2]/a[2]")).click();
Thread.sleep(3000);
String handle4 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle5 : driver.getWindowHandles()) {
if (handle5.equals(handle4))
continue;
driver.switchTo().window(handle5);
}
driver.switchTo().frame("advanced_iframe");
//登录
driver.findElement(By.xpath("//*[@id=\"user_login\"]")).sendKeys("zmdsnly");
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/form/div/div/input")).sendKeys("ly123456");
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/form/p[3]/input[1]")).click();
Thread.sleep(1000);
driver.switchTo().defaultContent();
Thread.sleep(3000);
//手动 回到首页
String handle5 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle6 : driver.getWindowHandles()) {
if (handle6.equals(handle5))
continue;
driver.switchTo().window(handle6);
}
//fabiaowenzhang
driver.findElement(By.xpath("/html/body/div[2]/div[1]/main/div/div/aside/aside/div/div[1]/div[2]/a[3]")).click();
Thread.sleep(1000);
String handle6 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle7 : driver.getWindowHandles()) {
if (handle7.equals(handle6))
continue;
driver.switchTo().window(handle7);
}
Thread.sleep(2000);
//需要手动关闭
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[1]/div/textarea")).sendKeys("测试大赛预览网页");
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/div/div/div/button")).click();
Thread.sleep(1000);
//段落
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div/div/div/div/div/div/div/div[2]/div[2]/div/div[2]/button/span[2]")).click();
Thread.sleep(1000);
//更多
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[1]/div/div[2]/div[3]/button")).click();
Thread.sleep(1000);
//代码编辑器
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div/div/div/div/div/div/div/div[2]/div[2]/button[2]")).click();
Thread.sleep(1000);
//HTML
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<table>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<tbody style='font-size:25px;text-align:center'>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<tr>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<th style='font-size: 40px; font-weight: bold;' colspan='5'>全国大学生软件测试大赛总决赛\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<span style='font-size:25px'>Mooctest 2020.11.22</span></th>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("</tr>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<tr>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<td>开发者</td>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<td>移动应用</td>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<td>Web应用</td>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<td>嵌入式</td>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("<td>Web安全</td>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("</tr>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("</tbody>\n");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/textarea")).sendKeys("</table>");
Thread.sleep(500);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[1]/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[1]/div/div[2]/button[1]")).click();
Thread.sleep(2000);
Thread.sleep(2000);
//设置居中 颜色
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/div[1]/div[2]/table/tbody/tr[1]/th")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/div[1]/div[1]/div/div/div[2]/div/div[1]/div/div/div/div[8]/button")).click();
Thread.sleep(3000);
//blue
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/div[1]/div[1]/div/div/div[2]/div/div[2]/div/div/div/div[3]/button[2]")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[9]/table/tbody/tr[2]/td[6]/div")).click();
Thread.sleep(3000);
//gray
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/div[1]/div[1]/div/div/div[2]/div/div[2]/div/div/div/div[3]/button[2]")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[9]/table/tbody/tr[2]/td[8]/div")).click();
Thread.sleep(3000);
//手动
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/div/div/div/button")).click();
Thread.sleep(1000);
//图像
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div/div/div/div/div/div/div/div[2]/div[2]/div/div[3]/button")).click();
Thread.sleep(1000);
//url
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[2]/div/div/div[2]/div[2]/div[2]/div/figure/div/div[3]/div[3]/button")).click();
Thread.sleep(1000);
//输入url
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div/div/div/div/div/div/div/div/form/input")).sendKeys("http://www.mooctest.org/static/img/banner4.eaa50f4.jpg");
Thread.sleep(1000);
//回车
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div/div/div/div/div/div/div/div/form/button")).click();
Thread.sleep(1000);
//图片样式
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[1]/div[4]/div[1]/div/div/div/div/div[2]/div/div/div[1]/div[2]/div[1]/div/button")).click();
Thread.sleep(1000);
//圆角
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div[2]/div/div/div/div/div/div/div/div[2]/div[2]/div/div[2]/div[1]/div")).click();
Thread.sleep(1000);
//文档
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[2]/div/div[2]/ul/li[1]/button")).click();
Thread.sleep(1000);
//特色图像
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div[5]/h2/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div[5]/div/div/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[10]/div[1]/div/div/div[3]/div[1]/div/button[2]")).click();
Thread.sleep(1000);
//第六张图片
driver.findElement(By.xpath("/html/body/div[10]/div[1]/div/div/div[3]/div[2]/div/ul/li[6]/div/div")).click();
Thread.sleep(1000);
//设置特色图像
driver.findElement(By.xpath("/html/body/div[10]/div[1]/div/div/div[4]/div/div[2]/button")).click();
Thread.sleep(1000);
//发布
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[1]/div/div[2]/button[2]")).click();
Thread.sleep(1000);
//可见性-公开
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/h2/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/fieldset/div[3]/input")).click();
Thread.sleep(1000);
//密码保护设置密码
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div/input")).sendKeys("mooctest");
Thread.sleep(1000);
//推荐:添加标签
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[4]/h2/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[4]/div/div/input")).sendKeys("测试\n大赛\n");
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[4]/div/div/span[2]/button")).click();
Thread.sleep(1000);
//点击发布
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[1]/div[1]/button")).click();
Thread.sleep(1000);
//查看文章
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/div[1]/div/div/div[1]/div/div[2]/div[3]/div/div/div/div[2]/div/div[2]/div[2]/a")).click();
Thread.sleep(1000);
//进入用户界面
driver.findElement(By.xpath("/html/body/div[1]/div/ul[2]/li[2]")).click();
Thread.sleep(1000);
String handle7 = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String handle8 : driver.getWindowHandles()) {
if (handle8.equals(handle7))
continue;
driver.switchTo().window(handle8);
}
//文章
driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/ul/li[3]/a")).click();
Thread.sleep(1000);
//所有文章
driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/ul/li[3]/ul/li[2]/a")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/ul/li[2]/a")).click();
Thread.sleep(1000);
//选择移动到回收站
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/div[1]/div[1]/select")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/div[1]/div[1]/select/option[3]")).click();
Thread.sleep(1000);
//全选
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/table/thead/tr/td/input")).click();
Thread.sleep(1000);
//应用
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/div[1]/div[1]/input")).click();
Thread.sleep(1000);
//回收站
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/ul/li[4]/a")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/div[1]/div[1]/select")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/div[1]/div[1]/select/option[3]")).click();
Thread.sleep(1000);
//全选-应用
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/table/thead/tr/td/input")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/div[2]/div[2]/div[1]/div[3]/form[1]/div[1]/div[1]/input")).click();
Thread.sleep(1000);
}
public static void main(String[] args) {
// Run main function to test your script.
WebDriver driver = new ChromeDriver();
try { test(driver); }
catch(Exception e) { e.printStackTrace(); }
finally { driver.quit(); }
}
}
这次决赛的功能测试主要是跳转界面的句柄切换,这次的重点没有放在框架的切换,以上具体代码带有注释,跑分是91.43,这是本人最后一次全国大学生软件测试大赛,以上代码希望能帮助到更多需要帮助的人。