Selenium+TestNG实战-2 第一个Selenium脚本之登录

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 测试相关
  • 时间:2017-11-12 21:11
  • 6117人已阅读
简介 前一篇,我们准备了好wordPress本地环境和eclipse编写脚本环境,这篇,我们新建一个Javamain方法,不管什么技巧,框架,什么数据分离,完全是根据selenium的简单几个API来实现wordpress的登录功能。 声明:本文出处凯哥个人博客网(www.kaigejava.com)。未经允许严禁转载本文地址:http://www.kaigejava.com/article/

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

前一篇,我们准备了好wordPress本地环境和eclipse编写脚本环境,这篇,我们新建一个Java main方法,不管什么技巧,框架,什么数据分离,完全是根据selenium的简单几个API来实现wordpress的登录功能。

 


声明:本文出处 凯哥个人博客网(www.kaigejava.com),发表于凯哥个人博客,未经允许严禁转载

本文地址:http://www.kaigejava.com/article/detail/81

凯哥微信公众号:凯哥Java(kaigejava)

用例:实现自动化登录wordpress站点,具体步骤如下

- 打开浏览器

- 打开本地wp地址

- 点击登录链接

- 输入用户名和密码

- 点击提交

- 验证用户是否登录成功

上面的步骤,和手工测试步骤是一模一样。我们把一个登录场景的自动化拆分成多个子步骤,而且每个子步骤,你几乎都能在selenium API中找到对应的方法来实现。当然,作为新手,你肯定需要多看一些入门的例子,才知道哪些API是什么作用,在这里,我就当做你已经明白本文中出现的selenium 方法的具体实现了什么功能,如果确实小白,那么本文的每行代码就背下来,多敲几遍。本文的举例就是selenium中的hello world,必须明白本文每行代码的作用。

 

新建一个Login.java,具体代码如下。

package testsuites;

 

import java.util.concurrent.TimeUnit;

 

import org.openqa.selenium.By;

import org.openqa.selenium.JavascriptExecutor;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

 

public class Login {

 

public static void main(String[] args) throws InterruptedException {

// TODO Auto-generated method stub

// 写入一个系统键值,告诉脚本chromedriver.exe的路径,这里是相等当前项目的路径,注意写法,以后经常用到这个写法

System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");

// 创建一个类WebDriver的实例driver,一般习惯写这个变量名称,指浏览器对象

// new ChromeDriver(),新初始化一个google浏览器对象

WebDriver driver = new ChromeDriver();

// 是浏览器窗口最大化

driver.manage().window().maximize();

// 设置隐式等待,下面设置5秒,根据页面加载速度决定

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

// 打开一个页面

driver.get("http://127.0.0.1/wordpress");

// 查找元素,这里找登录链接这个元素

WebElement login_link = driver.findElement(By.xpath(".//*[@id='meta-2']/ul/li[1]/a"));

// 发现登录需要下拉页面到底部,才可以看到,默认显示一个banner的图片

// 利用js 下拉滚动条

//创建一个javascript 执行实例  

        JavascriptExecutor je = (JavascriptExecutor) driver;  

              

        //执行js语句,拖拽浏览器滚动条,直到该元素到底部,马上就不可以见  

        je.executeScript("arguments[0].scrollIntoView(true);", login_link);  

// 执行点击动作,点击的对象是元素

login_link.click();

// 线程暂停等待

Thread.sleep(1000);

// 定位用户名输入框

driver.findElement(By.id("user_login")).sendKeys("root");

// 输入密码

driver.findElement(By.xpath("//*[@id='user_pass']")).sendKeys("123456");

// 点击登录按钮

WebElement loginBtn = driver.findElement(By.xpath(".//*[@id='wp-submit']"));

loginBtn.click();

Thread.sleep(1000);

// 测试断言部分

// 登录后用户名出现在右上角显示位置的元素定位

WebElement user_nickName = driver.findElement(By.xpath(".//*[@id='wp-admin-bar-my-account']/a/span"));

try {

if(user_nickName.isDisplayed()){

System.out.println("用户登录成功!");

}

}catch (Exception e) {

System.out.println("出现异常" + e.toString());

}

// 测试完成,关闭和退出浏览器

driver.quit();

 

}

 

}

 

运行一下,没有问题,打印出“用户登录成功!”。

 

通过上面第一个例子,我强制给你灌输了这么几个方法或者概念。

 

- 浏览器对象初始化的过程,先要写入注册表一个键值,调用插件启动浏览器。这里就用到了Java的多态的知识,ChromeDriver集成了RemoteWebDriver, 而RemoteWebDriver继承WebDriver。

- 浏览器窗口最大化方法

- 隐式等待方法

- Get方法,打开一个站点,参数是url

- 元素可以先声明是一个WebElement类型,然后写元素操作,或者直接driver.这样直接写,两行代码合并一行。

- 元素定位方法,可以是xpath也可以是id,selenium一共支持八种方法定位元素

- Selenium如何执行javascript代码

- 线程等待

- 元素点击操作

- 元素输入操作

- 元素出现在页面的isDisplay方法

- 测试结果断言,if语句,try catch捕获异常

 

总结:

我们就像模拟手工操作一样,全部动作都写到一个文件代码中,而且完全实现了自动化测试的目的。作为初学者,能写出这样的自动化用例,完全没有毛病和不对的地方。如果确实是第一次接触selenium的人,建议上面的代码,敲个三五遍,熟悉每行代码的意思,如果有必要,可以背下来。因为后面的脚本都是基于本篇的基础操作来实现各种场景的自动化测试脚本。

本文出处:凯哥j个人博客网(www.kaigejava.com)

TopTop