zoukankan      html  css  js  c++  java
  • 封装常用的selenium方法

    package com.yk.userlive.base;

    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.concurrent.TimeUnit;

    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.Proxy;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.FirefoxProfile;
    import org.openqa.selenium.firefox.internal.ProfilesIni;
    import org.openqa.selenium.ie.InternetExplorerDriver;
    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.openqa.selenium.remote.RemoteWebDriver;

    /**
    * @author Seiitsu 2016年9月5日
    */
    public class YKWebTestAPI {

    private String value = “”;
    private boolean flag = true;
    private static WebDriver driver = null;

    /*
    * public void setWebDriver(WebDriver driver) { this.driver = new
    * InternetExplorerDriver(); }
    *
    * public WebDriver getWebDriver() { return this.driver = new
    * InternetExplorerDriver(); }
    */

    public static WebDriver myDriver(String browser) {

    String proxyIpAndPort= “localhost:12104”;
    DesiredCapabilities cap = new DesiredCapabilities();
    Proxy proxy=new Proxy();
    proxy.setHttpProxy(proxyIpAndPort).setFtpProxy(proxyIpAndPort).setSslProxy(proxyIpAndPort);
    cap.setCapability(CapabilityType.ForSeleniumServer.AVOIDING_PROXY, true);
    cap.setCapability(CapabilityType.ForSeleniumServer.ONLY_PROXYING_SELENIUM_TRAFFIC, true);
    System.setProperty(“http.nonProxyHosts”, “localhost”);
    cap.setCapability(CapabilityType.PROXY, proxy);

    if (“firefox”.equals(browser.toLowerCase())) {

    // 启动本机firefox
    ProfilesIni allProfiles = new ProfilesIni();
    FirefoxProfile profile = allProfiles.getProfile(“default”);
    // 启动浏览器
    driver = new FirefoxDriver(profile);
    driver.manage().window().maximize();

    } else if (“ie”.equals(browser.toLowerCase())) {

    // 关闭保护模式
    DesiredCapabilities capability = new DesiredCapabilities();
    capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
    capability.setCapability(“ignoreProtectedModeSettings”, true);
    // 指定驱动位置,并加载驱动
    System.setProperty(“webdriver.ie.driver”, “tools/IEDriverServer64.exe”);
    driver = new InternetExplorerDriver(capability);
    driver.manage().window().maximize();

    } else if (“chrome”.equals(browser.toLowerCase())) {

    // 指定驱动位置,并加载驱动
    System.setProperty(“webdriver.chrome.driver”, “tools/chromedriver.exe”);
    driver = new ChromeDriver();
    driver.manage().window().maximize();

    } else {

    System.out.println(“==============”);
    }
    return driver;

    }

    /**
    * 根据name定位元素并输入内容
    *
    * @param name
    * @param value
    */
    public boolean inputByName(String name, String value) {
    if (flag) {
    try {
    driver.findElement(By.name(name)).sendKeys(value);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据classname定位元素并点击
    *
    * @param name
    */
    public boolean clickByClassName(String name) {
    if (flag) {
    try {
    driver.findElement(By.className(name)).click();;
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据linkText定位元素并点击
    *
    * @param name
    */
    public boolean clickByLinkText(String name) {
    if (flag) {
    try {
    driver.findElement(By.linkText(name)).click();;
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 执行js方法
    *
    * @param js
    */
    public boolean excuteJS(String js) {
    if (flag) {
    try {
    ((JavascriptExecutor) driver).executeScript(js);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据id定位元素并输入内容
    *
    * @param id
    * @param value
    */
    public boolean inputById(String id, String value) {
    if (flag) {
    try {
    driver.findElement(By.id(id)).sendKeys(value);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并输入内容
    *
    * @param xpath
    * @param value
    */
    public boolean inputByXpath(String xpath, String value) {
    if (flag) {
    try {
    driver.findElement(By.xpath(xpath)).sendKeys(value);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并输入内容
    *
    * @param css
    * @param value
    */
    public boolean inputByCss(String css, String value) {
    if (flag) {
    try {
    driver.findElement(By.cssSelector(css)).sendKeys(value);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    public boolean clickBindCard(String cardNo) {
    flag = false;
    String value = “”;
    int i = 0;
    if (!driver.findElement(By.id(“r_x”)).isDisplayed()) {
    for (i = 0; i < 5; i++) {
    value = driver.findElement(By.id(“t_b_” + i)).getText();
    if (value.contains(cardNo)) {
    flag = true;
    System.out.println(“t_b_” + i);
    driver.findElement(By.id(“sel_img_” + i)).click();
    }
    }
    } else {
    while (driver.findElement(By.id(“r_x”)).isDisplayed()) {
    System.out.println(“i>>” + i);
    if (i > 0 && i % 5 == 0) {
    driver.findElement(By.id(“r_x”)).click();
    }
    value = driver.findElement(By.id(“t_b_” + i)).getText();
    System.out.println(value + “>>” + value.contains(cardNo));
    if (value.contains(cardNo)) {
    flag = true;
    System.out.println(“t_b_” + i);
    driver.findElement(By.id(“sel_img_” + i)).click();
    break;
    }
    i++;
    }
    }
    return flag;
    }

    /**
    * 根据id定位元素并点击
    *
    * @param id
    */
    public boolean clickById(String id) {
    if (flag) {
    try {
    if (id.startsWith(“sel_img_”) && !id.contains(“sel_img_ct”)) {
    int i = Integer.parseInt(id.substring(8, id.length()));
    int j = 4;
    while (i > 3) {
    driver.findElement(By.id(“sel_img_” + j)).click();
    i -= 4;
    j += 4;
    }
    }
    driver.findElement(By.id(id)).click();
    System.out.println(“click element by id>>” + id);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并点击
    *
    * @param xpath
    */
    public boolean clickByXpath(String xpath) {
    if (flag) {
    try {
    driver.findElement(By.xpath(xpath)).click();
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并点击
    *
    * @param css
    */
    public boolean clickByCss(String css) {
    if (flag) {
    try {
    driver.findElement(By.cssSelector(css)).click();
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据id定位元素并连续点击
    *
    * @param id
    */
    public boolean clickById(String id, int count) {
    if (flag) {
    try {
    if (id.startsWith(“sel_img_”) && !id.contains(“sel_img_ct”)) {
    int i = Integer.parseInt(id.substring(8, id.length()));
    int j = 4;
    while (i > 3) {
    driver.findElement(By.id(“sel_img_” + j)).click();
    i -= 4;
    j += 4;
    }
    }
    for (int i = 0; i < count; i++) {
    driver.findElement(By.id(id)).click();
    }
    System.out.println(“click element by id>>” + id);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并连续点击
    *
    * @param xpath
    */
    public boolean clickByXpath(String xpath, int count) {
    if (flag) {
    try {
    for (int i = 0; i < count; i++) {
    driver.findElement(By.xpath(xpath)).click();
    }
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并连续点击
    *
    * @param css
    */
    public boolean clickByCss(String css, int count) {
    if (flag) {
    try {
    for (int i = 0; i < count; i++) {
    driver.findElement(By.cssSelector(css)).click();
    }
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素获取值
    *
    * @param xpath
    * @return
    */
    public String getValueByXpath(String xpath) {
    if (flag) {
    value = driver.findElement(By.xpath(xpath)).getText();
    System.out.println();
    return value;
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return null;
    }
    }

    /**
    * 根据id定位元素获取值
    *
    * @param id
    * @return
    */
    public String getValueById(String id) {
    if (flag) {
    value = driver.findElement(By.id(id)).getText();
    System.out.println(value);
    return value;
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return null;
    }
    }

    /**
    * 根据css定位元素获取值
    *
    * @param css
    * @return
    */
    public String getValueByCss(String css) {
    if (flag) {
    value = driver.findElement(By.cssSelector(css)).getText();
    System.out.println(value);
    return value;
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return null;
    }
    }

    /**
    * 根据id定位元素并清空值
    *
    * @param id
    */
    public boolean clearInputValueById(String id) {
    if (flag) {
    try {
    driver.findElement(By.id(id)).clear();
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并清空值
    *
    * @param xpath
    */
    public boolean clearInputValueByXpath(String xpath) {
    if (flag) {
    try {
    driver.findElement(By.xpath(xpath)).clear();
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并清空值
    *
    * @param css
    */
    public boolean clearInputValueByCss(String css) {
    if (flag) {
    try {
    driver.findElement(By.cssSelector(css)).clear();
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 获取网页的title值
    *
    * @return
    */
    public String getTitle() {
    if (flag) {
    return driver.getTitle();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return null;
    }
    }

    /**
    * 切换到frame框
    *
    * @param frameName
    */
    public boolean switchToFrame(String frameName) {
    if (flag) {
    try {
    driver.switchTo().frame(frameName);
    return true;
    } catch (Exception e) {
    e.printStackTrace();
    System.out.println(e.getMessage());
    return false;
    }
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据id定位元素并获取元素的显示状态
    *
    * @param id
    * @return boolean
    */
    public boolean getDisplayStatById(String id) {
    if (flag) {
    return driver.findElement(By.id(id)).isDisplayed();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并获取元素的显示状态
    *
    * @param xpath
    * @return
    */
    public boolean getDisplayStatByXpath(String xpath) {
    if (flag) {
    return driver.findElement(By.xpath(xpath)).isDisplayed();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并获取元素的显示状态
    *
    * @param css
    * @return
    */
    public boolean getDisplayStatByCss(String css) {
    if (flag) {
    return driver.findElement(By.cssSelector(css)).isDisplayed();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据id定位元素并获取元素的可写状态
    *
    * @param id
    * @return
    */
    public boolean getEnableStatById(String id) {
    if (flag) {
    return driver.findElement(By.id(id)).isEnabled();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并获取元素的可写状态
    *
    * @param xpath
    * @return
    */
    public boolean getEnableStatByXpath(String xpath) {
    if (flag) {
    return driver.findElement(By.xpath(xpath)).isEnabled();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并获取元素的可写状态
    *
    * @param css
    * @return
    */
    public boolean getEnableStatByCss(String css) {
    if (flag) {
    return driver.findElement(By.cssSelector(css)).isEnabled();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }

    }

    /**
    * 根据id定位元素并获取元素的选中状态
    *
    * @param id
    * @return
    */
    public boolean getSelectStatById(String id) {
    if (flag) {
    return driver.findElement(By.id(id)).isSelected();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据xpath定位元素并获取元素的选中状态
    *
    * @param xpath
    * @return
    */
    public boolean getSelectStatByXpath(String xpath) {
    if (flag) {
    return driver.findElement(By.xpath(xpath)).isSelected();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 根据css定位元素并获取元素的选中状态
    *
    * @param css
    * @return
    */
    public boolean getSelectStatByCss(String css) {
    if (flag) {
    return driver.findElement(By.cssSelector(css)).isSelected();
    } else {
    System.out.println(“flag is false, function is not excuted”);
    return false;
    }
    }

    /**
    * 获取当前焦点所在页面元素的属性值(name,value,id,src等等)
    *
    * @param attribute
    * @return
    */
    public String getFocusAttributeValue(String attribute) {
    try {
    Thread.sleep(333);
    } catch (Exception e) {
    e.printStackTrace();
    }
    value = driver.switchTo().activeElement().getAttribute(attribute);
    System.out.println(“The focus Element’s ” + attribute + “attribute value is>>” + value);
    return value;
    }

    /**
    * 打开网页链接
    *
    * @param pageUrl
    */
    public boolean openPage(String pageUrl) {
    try {
    driver.get(pageUrl);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 进入测试,打开浏览器,输入网址,打开网页
    *
    * @param remoteUrl
    * 远程服务器地址
    * @param pageUrl
    * 测试页面地址
    */
    public boolean startTest(String remoteUrl, String pageUrl) {
    try {
    try {
    driver = new RemoteWebDriver(new URL(remoteUrl), DesiredCapabilities.firefox());
    } catch (MalformedURLException e) {
    e.printStackTrace();
    }
    driver.get(pageUrl);
    return true;
    } catch (Exception e) {
    e.printStackTrace();
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 进入测试,打开浏览器,输入网址,打开网页
    *
    * @param explore
    * 调用的浏览器,需要启动不同的server,如:firefox,需要运行selenium-server-standalone-
    * 2.33.0.jar。IE,则需运行IEDriverServer.exe
    *
    * @param remoteUrl
    * 远程服务器地址
    * @param pageUrl
    * 测试页面地址
    */
    public boolean startTest(String explore, String remoteUrl, String pageUrl) {
    try {
    try {
    if (“f”.equals(explore)) {
    System.out.println(“firefox”);
    driver = new RemoteWebDriver(new URL(remoteUrl), DesiredCapabilities.firefox());
    } else if (“ie”.equals(explore)) {
    System.out.println(“internet explorer”);
    DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
    driver = new RemoteWebDriver(new URL(remoteUrl), cap);
    } else {
    System.out.println(“firefox”);
    driver = new RemoteWebDriver(new URL(remoteUrl), DesiredCapabilities.firefox());
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    driver.get(pageUrl);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 设置定位页面元素的超时时间
    *
    * @param second
    * @return
    */
    public boolean setTimeOut(int second) {
    try {
    driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 结束测试,关闭浏览器
    */
    public boolean endTest() {
    try {
    driver.quit();
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 休息间隔,单位毫秒
    *
    * @param i
    * @return
    */
    public boolean sleep(int i) {
    try {
    Thread.sleep(i);
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 根据id等待对应的页面元素出现
    *
    * @param id
    * @return
    */
    public boolean waitForElementById(String id) {
    try {
    driver.findElement(By.id(id));
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 根据css等待对应的页面元素出现
    *
    * @param css
    * @return
    */
    public boolean waitForElementByCss(String css) {
    try {
    driver.findElement(By.cssSelector(css));
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }

    /**
    * 根据xpath等待对应的页面元素出现
    *
    * @param xpath
    * @return
    */
    public boolean waitForElementByXpath(String xpath) {
    try {
    driver.findElement(By.xpath(xpath));
    return true;
    } catch (Exception e) {
    System.out.println(e.getMessage());
    return false;
    }
    }
    }

    转载请注明:《封装常用的selenium方法--http://www.testinn.pub/testinn/55

  • 相关阅读:
    分布式网站数据库同步方案——sqlserver数据库同步复制
    GridView控件中加自动排列序号
    天使的声音
    看人家老外是怎么乱扔垃圾的
    滚动条样式收集
    ASP程序加密解密方法全面解析
    Rewrite实现页面静态化重写
    [转]修改Linux操作系统日期和时间
    Sybase备份还原
    C#读写Access数据库公用类
  • 原文地址:https://www.cnblogs.com/seiitsu/p/5944577.html
Copyright © 2011-2022 走看看