selenium之开发登录脚本_maven版本一

来源:互联网 发布:唯一视觉婚纱摄影 知乎 编辑:程序博客网 时间:2024/06/05 16:47

实战效果

这里写图片描述

首先新建一个项目,步骤如下:

New-project-Maven-Maven project-Next

这里写图片描述
这里写图片描述

下一步:

百度搜索:maven repository

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

接下来我们可以愉快的整代码了:

这里写图片描述

接下来的步骤我们参照我们的自动化测试用例来进行:

这里写图片描述

代码初始版本:

package com.imooc.seleniumJava;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.interactions.Actions;public class Login {    public WebDriver driver;    //初始化chrome浏览器驱动    public void InitDriver()    {        System.setProperty("webdriver.chrome.driver", "D:\\java\\chromedriver-32\\chromedriver.exe");        driver=new ChromeDriver();        driver.get("http://www.imooc.com");        //窗口最大化        driver.manage().window().maximize();    }    /*     * 登录脚本     * */    public void loginScript() throws Exception{        //查找登录按钮        driver.findElement(By.id("js-signin-btn")).click();        //加入休眠        Thread.sleep(3000);        //找到name为"email"的用户名信息        WebElement user=driver.findElement(By.name("email"));        //是否可显示        user.isDisplayed();        //找到name为"password"的密码信息        WebElement password=driver.findElement(By.name("password"));        //是否可显示        password.isDisplayed();        //找到登录页面的登录按钮        WebElement loginButton=driver.findElement(By.className("btn-red"));        //是否可显示        loginButton.isDisplayed();        //输入用户名        user.sendKeys("m13031155057@163.com");        //输入密码        password.sendKeys("1111");        //点击登录按钮        loginButton.click();        //休眠        Thread.sleep(3000);        //找到并检测首页个人头像是否可显示,第8步用例步骤        WebElement header=driver.findElement(By.id("header-avator"));        header.isDisplayed();        Actions actions=new Actions(driver);        //鼠标移动到首页头像部位        actions.moveToElement(header).perform();        //得到并打印我们的用户名称        String userInfo=driver.findElement(By.className("name")).getText();        System.out.println(userInfo);    }    public static void main(String[]args) throws Exception{        Login login=new Login();        login.InitDriver();        login.loginScript();    }}

代码进阶版本一:

package com.imooc.seleniumJava;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.interactions.Actions;public class Login {    public WebDriver driver;    //初始化chrome浏览器驱动    public void InitDriver()    {        System.setProperty("webdriver.chrome.driver", "D:\\java\\chromedriver-32\\chromedriver.exe");        driver=new ChromeDriver();        driver.get("http://www.imooc.com");        //窗口最大化        driver.manage().window().maximize();    }    /*     * 登录脚本     * */    public void loginScript() throws Exception{        /*         * 声明信息         * */        String userName="m13031155057@163.com";        String emailElement="email";        String userBy="name";        String passBy="name";        String buttonBy="className";        String headerBy="id";        String userPass="1111";        String passwordElement="password";        String buttonElement="btn-red";        String headerElement="header-avator";        String nameElement="name";        InitDriver();        //查找登录按钮        driver.findElement(By.id("js-signin-btn")).click();        //加入休眠        Thread.sleep(3000);        //找到name为"email"的用户名信息        WebElement user=driver.findElement(this.byStr(userBy,emailElement));        //是否可显示        user.isDisplayed();        //找到name为"password"的密码信息        WebElement password=driver.findElement(this.byStr(passBy, passwordElement));        //是否可显示        password.isDisplayed();        //找到登录页面的登录按钮        WebElement loginButton=driver.findElement(this.byStr(buttonBy, buttonElement));        //是否可显示        loginButton.isDisplayed();        //输入用户名        user.sendKeys(userName);        //输入密码        password.sendKeys(userPass);        //点击登录按钮        loginButton.click();        //休眠        Thread.sleep(3000);        //找到并检测首页个人头像是否可显示,第8步用例步骤        WebElement header=driver.findElement(this.byStr(headerBy, headerElement));        header.isDisplayed();        Actions actions=new Actions(driver);        //鼠标移动到首页头像部位        actions.moveToElement(header).perform();        //得到并打印我们的用户名称        String userInfo=driver.findElement(By.className("name")).getText();        System.out.println(userInfo);        if(userInfo.equals("qq_转角遇到_0"))        {            System.out.println("登录成功");        }else        {            System.out.println("登录失败");        }    }    /*     * 封装By     * */    public By byStr(String by,String local){        if(by.equals("id"))        {            return By.id(local);        }else if(by.equals("name"))        {            return By.name(local);        }else if(by.equals("className"))        {            return By.className(local);        }else        {            return By.xpath(local);        }    }    public static void main(String[]args) throws Exception{        Login login=new Login();        login.loginScript();    }}

进阶版本一的优势

1.加入了封装方法By,使我们常见的idname,className,Xpath等封装起来,调用方便,一目了然2.对于我们迭代的时候用户名更改的时候,为了不产生不必要的麻烦,所以我们对用户名,密码等变量进行了声明,保证了灵活性

进阶版本二代码:

package com.imooc.seleniumJava;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.interactions.Actions;public class Login {    public WebDriver driver;    //初始化chrome浏览器驱动    public void InitDriver()    {        System.setProperty("webdriver.chrome.driver", "D:\\java\\chromedriver-32\\chromedriver.exe");        driver=new ChromeDriver();        driver.get("http://www.imooc.com");        //窗口最大化        driver.manage().window().maximize();    }    /*     * 登录脚本     * */    public void loginScript() throws Exception{        /*         * 声明信息         * */        String loginBy="id";        String loginElement="js-signin-btn";        String userName="m13031155057@163.com";        String emailElement="email";        String userBy="name";        String passBy="name";        String buttonBy="className";        String headerBy="id";        String userPass="1111";        String passwordElement="password";        String buttonElement="btn-red";        String headerElement="header-avator";        String nameElement="name";        String nameInfo="className";        InitDriver();        //查找登录按钮        this.element(this.byStr(loginBy, loginElement)).click();        //加入休眠        Thread.sleep(3000);        //找到name为"email"的用户名信息        WebElement user=this.element(this.byStr(userBy,emailElement));        //是否可显示        user.isDisplayed();        //找到name为"password"的密码信息        WebElement password=this.element(this.byStr(passBy, passwordElement));        //是否可显示        password.isDisplayed();        //找到登录页面的登录按钮        WebElement loginButton=this.element(this.byStr(buttonBy, buttonElement));        //是否可显示        loginButton.isDisplayed();        //输入用户名        user.sendKeys(userName);        //输入密码        password.sendKeys(userPass);        //点击登录按钮        loginButton.click();        //休眠        Thread.sleep(3000);        //找到并检测首页个人头像是否可显示,第8步用例步骤        WebElement header=this.element(this.byStr(headerBy, headerElement));        header.isDisplayed();        Actions actions=new Actions(driver);        //鼠标移动到首页头像部位        actions.moveToElement(header).perform();        //得到并打印我们的用户名称        String userInfo=this.element(this.byStr(nameInfo, nameElement)).getText();        System.out.println(userInfo);        if(userInfo.equals("qq_转角遇到_0"))        {            System.out.println("登录成功");        }else        {            System.out.println("登录失败");        }    }    /*     * 封装By     * */    public By byStr(String by,String local){        if(by.equals("id"))        {            return By.id(local);        }else if(by.equals("name"))        {            return By.name(local);        }else if(by.equals("className"))        {            return By.className(local);        }else        {            return By.xpath(local);        }    }    /*     * 封装Element     * */    public WebElement element(By by){        WebElement ele=driver.findElement(by);        return ele;    }    public static void main(String[]args) throws Exception{        Login login=new Login();        login.loginScript();    }}

进阶版本二优势:

1.加入了封装element方法,driver.finElement()使用element方法来代替,更加一目了然

总结:

1.注意Thread.sleep()的应用,这里我们用到两次,第一次在我们首页点击登录后会弹出一个登录框,这个步骤其实需要一定时间进行加载,所以我们在其点击之后执行下一步操作前应该休眠几秒,否则会报错:no such element: Unable to locate element: {"method":"name","selector":"email"}另一个Thread.sleep()是在我们点击登录框中的"登录按钮"之后因为要加载我们的用户信息,同样需要应用休眠,凡是需要加载信息的都可以考虑进行休眠2.执行上述代码其实多次报诸如:no element或者Unable to locate element归根结底还是我们找寻元素犯了一些常见的错误: 1. id,className,name等元素看错或者混淆,比如一个"登录"按钮,本来它的元素类型是id,但是我们却通过"By.className"或者By.name来查找它 2. 关于id,className,name的属性值我们一定要到对应的网站上进行查看并且复制,不要嫌麻烦,比如我们的"登录"按钮是"btn_red",如果你自己输入的话看起来和人家网站上的一样,然而实践亲测往往自己输入的执行自动化的时候还是定位到我们没有找到这个元素,所以最好是粘贴人家官方的,避免不必要的错误
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三星note4摔黑屏怎么办 手机屏慢慢黑屏怎么办 华为手机外屏坏了怎么办 手机屏幕摔开了怎么办 iphone完全坏了怎么办 苹果屏幕盖不严怎么办 苹果手机频幕摔坏了怎么办 平板触屏不灵怎么办 小米触屏不灵怎么办 6s屏幕不灵怎么办 苹果6sp变弯后怎么办 苹果关不了机怎么办 小米手机屏幕乱点怎么办 iphone6s卡屏了怎么办 苹果手机屏幕动不了怎么办 苹果手机滑不动怎么办 升级失败白苹果怎么办 6s屏幕不准怎么办 苹果4s充不进电怎么办 苹果4sbi锁怎么办 乐视pro3充电慢怎么办 手机屏幕触碰不灵敏怎么办 手机换屏幕失灵怎么办 手机图标有重影怎么办 苹果屏幕太灵敏怎么办 5s触摸不灵敏怎么办 导航触屏失灵怎么办 汽车导航触摸屏失灵怎么办 爱丽舍导航仪触屏失灵怎么办 手机要开机很久怎么办 小米手机屏失灵怎么办 5s手机屏幕松动怎么办 手机按钮不灵了怎么办 手机触摸屏不灵了怎么办 mac触摸板失灵怎么办 苹果屏幕触摸失灵怎么办 三星手机屏幕没反应怎么办 手机开机定屏怎么办 手机触摸局部失灵怎么办 苹果手机屏幕按键失灵怎么办 5s锁屏键坏了怎么办