package com.dn.twohomework;

import java.util.ArrayList;

import java.util.Set;
import java.util.List;
// import org.apache.bcel.generic.Select;
 //import org.openqa.selenium.support.ui.Select;
//import org.apache.bcel.generic.Select;
 //import com.sun.org.apache.bcel.internal.generic.Select;
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.ChromeOptions;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;

import java.util.Iterator;

import com.gargoylesoftware.htmlunit.html.impl.SelectableTextInput;
//import com.gargoylesoftware.htmlunit.javascript.host.Iterator;
//import com.gargoylesoftware.htmlunit.javascript.host.Set;
//import com.sun.media.sound.FFT;
//import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
import java.util.HashSet;;

public class keyWord1 {
    private static WebDriver driver;

    // 打开浏览�?
    public void openBrowser(String b, String xpath) {
        if ("cc".equals(b)) {
            
            ChromeDriver chrome = new ChromeDriver("webdriver.chrome.driver", xpath);
            driver = chrome.getdriver();

        } else if ("ff".equals(xpath)) {
            FFDriver ff = new FFDriver("webdriver.gecko.driver", xpath);
            ff.getdriver();
            
        } else if ("ie".equals(b)) {

            IEDriver ie = new IEDriver("webdriver.ie.driver", xpath);
            driver = ie.getdriver();
        }
    }

    public static WebDriver getDriver() {
        return driver;
    }

    public static void setDriver(WebDriver driver) {
        keyWord1.driver = driver;
    }

    // 输入网址
    public void geturl(String url) {
        try {
            driver.get(url);
            

             //ChromeOptions options = new ChromeOptions();
            //options.addArguments("--start-fullscreen");
            //driver.manage().window().maximize();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("打开浏览器失�?");
            e.printStackTrace();
        }
    }

    // 等待时间
    public void sleep(String time) throws NumberFormatException, InterruptedException {

        Thread.sleep(Integer.parseInt(time));
    }

    // 输入内容
    public void input(String xpath, String word) {
        try {
            driver.findElement(By.xpath(xpath)).clear();
            driver.findElement(By.xpath(xpath)).sendKeys(word);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("输入字符串失�?");
            e.printStackTrace();
        }
    }

    // 点击
    public void click(String xpath) {
        try {
            driver.findElement(By.xpath(xpath)).click();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("点击失败");
            e.printStackTrace();
        }

    }

    // 关闭旧浏览器,切换到新窗�?
    public void closeOldWin() {
        List<String> handle = new ArrayList<String>();
        Set<String> s = driver.getWindowHandles();
        // 循环获取数组里的句柄,保存到链表handle里面
        for (Iterator<String> it = s.iterator(); it.hasNext();) {
            handle.add(it.next().toString());

        }

        driver.close();
        driver.switchTo().window(handle.get(1));

    }

    // 关闭新浏览器,切换到旧窗�?
    public void closeNewWin() {
        List<String> handle = new ArrayList<String>();
        Set<String> s = driver.getWindowHandles();
        // 循环获取数组里的句柄,保存到链表handle里面
        for (Iterator<String> it = s.iterator(); it.hasNext();) {
            handle.add(it.next().toString());

        }
        driver.switchTo().window(handle.get(1));

        driver.close();
        driver.switchTo().window(handle.get(0));

    }

    // 进入子页�?
    public void intoIframe(String xpath) {
        try {
            driver.switchTo().frame(driver.findElement(By.xpath(xpath)));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("进入Iframe失败");
            e.printStackTrace();
        }

    }

    // 关闭子页�?
    public void outIframe() {
        driver.switchTo().defaultContent();
    }

    // 获取文字信息
    public void getText(String xpath) {
        System.out.println(driver.findElement(By.xpath(xpath)).getText());
    }

    // hover
    public void hover(String xpath){
        try {
            Actions builder = new Actions(driver);
            builder.moveToElement(driver.findElement(By.xpath(xpath))).build().perform();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            
            e.printStackTrace();
            System.out.println("悬停失败");
        }
    }
    //获取链接link
    public String getLink(String xpath){
        String link = "about:bliank";
        try {
            link = driver.findElement(By.xpath(xpath)).getAttribute("href");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            
            e.printStackTrace();
            System.out.println("获取链接失败");
        }
        return link;
    }
    //提交表单
    public void submit(String xpath){
        try {
            driver.findElement(By.xpath(xpath)).submit();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("提交失败");
            e.printStackTrace();
        }
    }
    //选择下拉框
    public void select(int num,String xpath){
   Select sel = new Select(driver.findElement(By.xpath(xpath)));
   sel.selectByIndex(num);

    }
    //通过js操作
    public void exejs(String text){
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript(text);
    }
    //上传图片
    public void uploadpiture(String name,String path){
        try {
            driver.findElement(By.name(name)).sendKeys(path);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("上传失败");
            
        }
    }
    //获得元素属性的值
    public String GetsTheValueOfTheElement(String xpath,String element){
    try {
        String getvalues =    driver.findElement(By.xpath(xpath)).getAttribute(element);
        return getvalues;
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println("获取元素属性的值失败");
        return null;
    }
    }
    //点击alert的确认按钮
        public void clickAlert(){
            driver.switchTo().alert().accept();;
        }
}

selenium--关键字驱动的更多相关文章

  1. Selenium关键字驱动测试框架Demo(Java版)

    Selenium关键字驱动测试框架Demo(Java版)http://www.docin.com/p-803493675.html

  2. UI自动化测试框架之Selenium关键字驱动

    一.原理及特点 1. 关键字驱动测试是数据驱动测试的一种改进类型 2. 主要关键字包括三类:被操作对象(Item).操作(Operation)和值(value),用面向对象形式可将其表现为Item.O ...

  3. UI自动化测试框架之Selenium关键字驱动 (转)

    摘要 自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测试工具解释这些关键字即可对其应用自动化 一.原理及特点 1.   关键字驱动测试是数据驱动测试的一种改进类型 2.    主要 ...

  4. 【转】UI自动化测试框架之Selenium关键字驱动

    原网址:https://my.oschina.net/hellotest/blog/531932#comment-list 摘要: 自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测 ...

  5. Python&Selenium 关键字驱动测试框架之数据文件解析

    摘要:在关键字驱动测试框架中,除了PO模式以及一些常规Action的封装外,一个很重要的内容就是读写EXCEL,在团队中如何让不会写代码的人也可以进行自动化测试? 我们可以将自动化测试用例按一定的规格 ...

  6. selenium 关键字驱动部分设计思路

    1 说明: 1.以下的代码亲测直接可用, 2.设计思路来自博客园的 张飞_ :http://www.cnblogs.com/zhangfei/p/5330994.html   /   http://w ...

  7. 数据驱动 vs 关键字驱动:对搭建UI自动化测试框架的探索

    UI自动化测试用例剖析 让我们先从分析一端自动化测试案例的代码开始我们的旅程.以下是我之前写的一个自动化测试的小Demo.这个Demo基于Selenium与Java.由于现在Selenium在自动化测 ...

  8. Appium 自动化测试框架:关键字驱动+数据驱动

    1. 关键字驱动框架简介 2. 框架结构说明 3. 框架代码实现 action 包  page_action.py business_process 包 case_process.py data_so ...

  9. UI自动化测试框架:关键字驱动+数据驱动

    1. 关键字驱动框架简介 2. 工程结构说明 3. 工程代码实现 action 包  page_action.py business_process 包 case_process.py data_so ...

  10. java自动化-关键字驱动在junit接口自动化的应用

    本文是继承上文的基础上进行的讨论,建议读者先阅读http://www.cnblogs.com/xuezhezlr/p/9097137.html和https://www.cnblogs.com/xuez ...

随机推荐

  1. 在MacOS中,Unity使用VSCode开发,4.7版本无法正常使用C#

    我在MacOS中安装了两个版本的Unity,一个是4.7版本,一个是5.6版本,在5.6版本中使用VSCode打开项目时,可以正常代码提示和查看,但是打开4.7版本的项目时,无法正常提示和查看. 经过 ...

  2. C#调用TSC条码打印机打印条码

    #region 调用TSC打印机打印条码 /// <summary> /// 调用TSC打印机打印条码 /// </summary> /// <param name=&q ...

  3. 常见MD5加密解密值及免费解密网站

    常用的MD5解密 MD5(admin,16)    = 7a57a5a743  MD5(admin,16)    = 7a57a5a743894a0e  MD5(admin888,16) = 469e ...

  4. EventBus 事件总线之我的理解

    用例:假设公司发布了一个公告 需要通过短信 和 邮件分别2种方式 通知员工 1:首先我们建立领域模型 /// <summary> /// 领域核心基类 /// </summary&g ...

  5. .net 爬虫框架技术选型

    个人认为爬虫框架分抓取框架和分析框架 1)抓取框架 .net 市面上好的似乎不多,选择要素分两种:1.轻量型,2.重量型. 1. 轻量型是可以定制一些特殊的功能或者插件开关形式.总体性能高,速度快. ...

  6. PL/SQL学习笔记_01_基础

    PL/SQL语句可以在Oracle客户端的 SQL窗口或者 command  窗口中运行 在SQL窗口中运行步骤同 SQL语句 在command  窗口中运行的步骤如下: 1)File—new com ...

  7. webpack打包编译时,不识别src目录以外的js或css

    前端的dva项目开发时,遇到个很郁闷的问题,用es6的语法简单的export一个变量出来,在其他js中import使用,结果就报错了.   export写法如下: const enUS = { acc ...

  8. Angular页面加载后自动弹窗

    首先在控制器内写好一个弹窗,我用的是ionic的默认提示对话框 // 一个确认对话框 $scope.showConfirm = function() { var confirmPopup = $ion ...

  9. 使用maven搭建环境

    今天第一次用maven创建springmvc工程,下载配置都很成功,但用命令行创建项目时遇到一些问题: 1.命令行显示命令不为内部或外部命令: 解决方法:使用管理员模式打开命令行 2. 显示到如下图所 ...

  10. Tomcat和Java Virtual Machine的性能调优总结

    就算生不逢时,也该理解理解了.已经在Java界快混迹3年了,对于一些性能调优的话题我是一直插不上嘴,只是针对昨晚看到的一篇性能调优的文章,我忍不住了. Tomcat性能调优: 找到Tomcat根目录下 ...