为了账号安全,请及时绑定邮箱和手机立即绑定

selenium优化后的测试代码

标签:
测试

重新分装了selenium的click事件,sendkeys事件,select事件,以及针对readonly的日期控件的处理. 下面有英文注释,注释很详细,这里不一一介绍了,

package com.common;

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;
import org.openqa.selenium.support.ui.Select;

public class PageObject {
    WebDriver driver;

    //Start the Chrome browser
    public WebDriver startChrome(String urlString){ 
        System.out.println("start Chrome browser...");        
        System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get(urlString);
        System.out.println("start Chrome browser succeed...");
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        return driver;
    }

    // Web-related click events
    public void click(String selector,String pathValue){
        switch (selector) {
        case "id":
            driver.findElement(By.id(pathValue)).click();
            System.out.println("This test click event is used-id: "+pathValue);
            break;
        case "name":
            driver.findElement(By.name(pathValue)).click();
            System.out.println("This test click event is used-name: "+pathValue);
            break;
        case "xpath":
            driver.findElement(By.xpath(pathValue)).click();
            System.out.println("This test click event is used-xpath: "+pathValue);
            break;
        case "cssSelector":
            driver.findElement(By.cssSelector(pathValue)).click();
            System.out.println("This test click event is used-cssSelector: "+pathValue);
            break;
        case "className":
            driver.findElement(By.className(pathValue)).click();
            System.out.println("This test click event is used-className: "+pathValue);
            break;
        case "tagName":
            driver.findElement(By.tagName(pathValue)).click();
            System.out.println("This test click event is used-tagName: "+pathValue);
            break;
        case "linkText":
            driver.findElement(By.linkText(pathValue)).click();
            System.out.println("This test click event is used-linkText: "+pathValue);
            break;
        case "partialLinkText":
            driver.findElement(By.partialLinkText(pathValue)).click();
            System.out.println("This test click event is used-partialLinkText: "+pathValue);
            break;      
        default:
            System.out.println("Illegal selector: "+selector+" !!!");
            break;
        }

    }

    //Web-related sendKeys events
    public void sendKeys(String selector,String pathValue,String sendkeys){
        switch (selector) {
        case "id":
            driver.findElement(By.id(pathValue)).clear();
            driver.findElement(By.id(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-id: "+pathValue);
            System.out.println("By id senKeys value: "+sendkeys);
            break;
        case "name":
            driver.findElement(By.name(pathValue)).clear();
            driver.findElement(By.name(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-name: "+pathValue);
            System.out.println("By name senKeys value: "+sendkeys);
            break;          
        case "xpath":
            driver.findElement(By.xpath(pathValue)).clear();
            driver.findElement(By.xpath(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-xpath: "+pathValue);
            System.out.println("By xpath senKeys value: "+sendkeys);
            break;
        case "linkText":
            driver.findElement(By.linkText(pathValue)).clear();
            driver.findElement(By.linkText(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-linkText: "+pathValue);
            System.out.println("By linkText senKeys value: "+sendkeys);
            break;
        case "className":
            driver.findElement(By.className(pathValue)).clear();
            driver.findElement(By.className(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-className: "+pathValue);
            System.out.println("By className senKeys value: "+sendkeys);
            break;
        case "tagName":
            driver.findElement(By.tagName(pathValue)).clear();
            driver.findElement(By.tagName(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-tagName: "+pathValue);
            System.out.println("By tagName senKeys value: "+sendkeys);
            break;
        case "partialLinkText":
            driver.findElement(By.partialLinkText(pathValue)).clear();
            driver.findElement(By.partialLinkText(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-partialLinkText: "+pathValue);
            System.out.println("By partialLinkText senKeys value: "+sendkeys);
            break;
        case "cssSelector":
            driver.findElement(By.cssSelector(pathValue)).clear();
            driver.findElement(By.cssSelector(pathValue)).sendKeys(sendkeys);
            System.out.println("This test sendKeys event is used-cssSelector: "+pathValue);
            System.out.println("By cssSelector senKeys value: "+sendkeys);
            break;          
        default:
            System.out.println("Illegal selector: "+selector+" !!!");
            break;
        }
    }

    //Web-related select events ,selectByVisibleText() method
    public void select(String selector,String pathValue,String selectValue) {
        switch (selector) {
        case "id":
            WebElement eId = driver.findElement(By.id(pathValue));
            Select selectId = new Select(eId);
            selectId.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-id: "+pathValue);            
            break;
        case "name":
            WebElement eName = driver.findElement(By.id(pathValue));
            Select selectName = new Select(eName);
            selectName.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-name: "+pathValue);
            break;
        case "xpath":
            WebElement eXpath = driver.findElement(By.xpath(pathValue));
            Select selectXpath = new Select(eXpath);
            selectXpath.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-xpath: "+pathValue);
            break;
        case "cssSelector":
            WebElement eCss = driver.findElement(By.cssSelector(pathValue));
            Select selectCss = new Select(eCss);
            selectCss.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-cssSelector: "+pathValue);
            break;
        case "className":
            WebElement eClass = driver.findElement(By.className(pathValue));
            Select selectClass = new Select(eClass);
            selectClass.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-className: "+pathValue);
            break;
        case "tagName":
            WebElement eTagName = driver.findElement(By.tagName(pathValue));
            Select selectTagName = new Select(eTagName);
            selectTagName.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-tagName: "+pathValue);
            break;
        case "linkText":
            WebElement eLinkText = driver.findElement(By.linkText(pathValue));
            Select selectLinkText = new Select(eLinkText);
            selectLinkText.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-linkText: "+pathValue);
            break;
        case "partialLinkText":
            WebElement epart = driver.findElement(By.partialLinkText(pathValue));
            Select selectPart = new Select(epart);
            selectPart.selectByVisibleText(selectValue);
            System.out.println("The select value is: "+selectValue);
            System.out.println("This test select event is used-partialLinkText: "+pathValue);
            break;      
        default:
            System.out.println("Illegal selector: "+selector+" !!!");
            break;
        }
    }

    // The web-related read-only date is set by id 
    public void selectDateById(String idpath,String date){      
        JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;        
        //remove readonly attribute
        removeAttribute.executeScript("var setDate=document.getElementById(\""+idpath+"\");setDate.removeAttribute('readonly');");
        WebElement setDatElement=driver.findElement(By.id(idpath));
        setDatElement.clear();
        setDatElement.sendKeys(date);
    }

    // The web-related read-only date is set by name 
    public void selectDateByName(String namepath,String date){      
        JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;        
        //remove readonly attribute
        removeAttribute.executeScript("var setDate=document.getElementByName(\""+namepath+"\");setDate.removeAttribute('readonly');");
        WebElement setDatElement=driver.findElement(By.name(namepath));
        setDatElement.clear();
        setDatElement.sendKeys(date);
    }

    // The web-related read-only date is set by ClassName
    public void selectDateByClassName(String ClassNamepath,String date){        
        JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;        
        //remove readonly attribute
        removeAttribute.executeScript("var setDate=document.getElementsByClassName(\""+ClassNamepath+"\");setDate.removeAttribute('readonly');");
        WebElement setDatElement=driver.findElement(By.className(ClassNamepath));
        setDatElement.clear();
        setDatElement.sendKeys(date);
    }

}

下面是测试分装代码的实例,使用的是testng框架

package com.common;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;

import com.common.PageObject;

public class NewTest {
    PageObject PO= new PageObject();
  @Test
  public void f() throws Exception {
    PO.sendKeys("name", "username", "admin");
    PO.sendKeys("name", "password", "1234");
    Thread.sleep(10000);
    PO.click("className", "login-btn");
    Thread.sleep(5000);
    PO.click("linkText", "用户管理");
    Thread.sleep(5000);
    PO.click("xpath", "//*[@id='mainPage']/div[3]/div[1]/div[2]/div/a[1]");
    Thread.sleep(5000);
    PO.select("xpath", "//*[@id='user-add-modal']/div/div/div[2]/form/div/div[3]/div[4]/div[1]/div/div/select", "集团公司");
    String chenliriqi="addregisterDate";
    String setdate="2015-5-25";
    String dateString = "2018-5-15";
    Thread.sleep(5000);
    String qixian= "addbusinssAllotedTime";
    PO.selectDateById(chenliriqi,setdate);
    PO.selectDateById(qixian,dateString);
    PO.click("xpath","//*[@id='user-add-modal']/div/div/div[3]/button[1]");

  }

  @BeforeMethod
  public void beforeMethod() {
      PO.startChrome("http://124.193.90.194:8020/login.html");

  }

  @AfterMethod
  public void afterMethod() {

  }

}
点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件测试工程师
手记
粉丝
75
获赞与收藏
435

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消