一篇文章了解并掌握 Selenium Java

作者:工程材料    来源:未知    发布时间:2019-12-18 21:42    浏览量:

搭建景况

开采IDE,新建三个工程

新建筑工程程

Project name: 项目名称
Project location: 项目在硬盘上的渠道

接下来:
1卡塔尔右键右侧项目列表 src—>New —> Package 弹出窗口, 输入包的名:javaBase

2卡塔尔国右键侧面创设的包名:java —>New —> Java Class 弹出窗口, 输入类的名:HelloSelenium

在HelloSelenium.java中编辑第二个java文件

package com.java.base;

public class HelloSelenium {
  public static void main(String[] args){
    System.out.println("hello Selenium");
  }
}

运作一下,看下是或不是能平常抛出 hello Selenium


ok,一切平常,接下去我们导入Selenuim-jar包:

点击菜单栏 File –> Project Structure(火速键Ctrl + Alt + Shift + s) ,点击 Project Structure分界面左边 的“Modules” 。在“Dependencies” 标签分界面下,点击右侧原野绿的“+” 号,选取第三个接纳“JAPAJEROs or directories…” ,采用相应的 jar 包,点“OK” ,jar包增添成功

添加jar包

假使大家刚刚新建的是五个java项目,大家供给把它调换到二个maven工程
很简短,项目上右键点击 Add Framework Support,然后勾选Maven,点击ok

导入maven

接下去大家展开pom.xml 配置Selenium.

<?xml version="1.0" encoding="UTF-8"?>
<project 
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mvn.demo</groupId>
    <artifactId>MyMvnPro</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>

        <!-- selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.4.0</version>
        </dependency>

    </dependencies>

</project>

点击弹框中的 import Changes

点击import Changes

接下去我们写二个德姆o来验证一下,新建多少个 SeleniumTest类

package javaBase;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumTest {
    public static void main(String[] args) {

        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");

        String title = driver.getTitle();
        System.out.printf(title);

        driver.close();
    }
}

到这边,景况就搭建好了


1.2.2  最大化浏览器  
  WebDriver driver = new FirefoxDriver();
  driver.manage().window().maximize();

一定成分

原则性元素是最常用也最首要的API之意气风发,与python肖似,java中也提供了种种固定方法

·id
·name
·class name
·tag name
·link text
·partial link text

·xpath

·css selector

对应的java代码为

findElement(By.id())
findElement(By.name())
findElement(By.className())
findElement(By.tagName())
findElement(By.linkText())
findElement(By.partialLinkText())
findElement(By.xpath())
findElement(By.cssSelector())

关于成分定位的学问能够参照:
1.(https://saucelabs.com/resources/articles/selenium-tips-css-selectors)
2.(http://blog.csdn.net/qingchunjun/article/details/42581261)
想要精通更加多能够参照:

  1. xpath语法
  2. css选择器

    By.cssSelector
      WebElement element = driver.findElement(By.cssSelector(".input_class"));

此文较长,笔者比较讨厌写的散装的博文,所以这里是对自身学习selenium的二个重新整合,首先会介绍一下Selenium

  • Java遭逢搭建,接着会经过代码对Selenium Java中常用API用法以致注意事项实行求证,ok,let's start.

    打开chrome浏览器
       WebDriverdriver = new ChromeDriver();

浏览器驱动

·假若是用的Chrome,到此处对应提到及驱动下载找
·注意安顿遇到变量


随便等待(隐形等待)

Java环境-JDK

·JDK的装置互连网教程一大堆,就不说了

图片 1

好用的浏览器

·推荐Chrome,下载地址就百度吗

最常用的是 element.getText(卡塔尔(英语:State of Qatar); 获取文本,推断文本内容。

API实例

此处小编会提及关于web自动化的片段常用API用法及注意事项
包括 :
1.模拟鼠标操作
2.模拟键盘操作
3.获得断言
4.安装成分等待
5.原则性成分组
6.表单切换
7.多窗口切换
8.下拉框抉择
9.警示框管理
10.文书上传
11.cookie操作
12.调用JavaScrip
13.窗口截图 等

感兴趣能够生机勃勃意气风发试试,参谋代码如下:

package JavaBase;

import com.sun.jna.platform.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;

import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * Created by moooke on 2017/8/21.
 */
public class HelloSelenium {
    public static void main(String[] args) throws InterruptedException {
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com/");

        String title = driver.getTitle();
        System.out.println(title);

//        System.out.println("改变浏览器窗口大小");
//        Borwser(driver);

//        System.out.println("浏览器前进后退");
//        BrowserGo(driver);

//        System.out.println("浏览器元素操作");
//        BrowserOperation(driver);

//        System.out.println("模拟鼠标操作");
//        MouseOperation(driver);

//        System.out.println("模拟键盘操作");
//        KeyBoardOperation(driver);

//        System.out.println("获取断言信息");
//        Assert(driver);

//        System.out.println("设置元素等待");
//        ElementWait(driver);

//        System.out.println("定位一组元素");
//        ElementsPositioning(driver);

//        System.out.println("多表单切换");
//        SwitchTable(driver);

//        System.out.println("多窗口切换");
//        WindowsSwitch(driver);

//        System.out.println("下拉框选择");
//        SelectWindow(driver);

//        System.out.println("警告框处理");
//        AlertDemo(driver);

//        System.out.println("文件上传");
//        FileUpload(driver);

//        System.out.println("浏览器Cookie操作");
//        BorwserCookie(driver);

//        System.out.println("执行JavaScript代码");
//        JavaScript(driver);

        System.out.println("获取窗口截图");
        ScreenShot(driver);

    }


    //改变窗口大小
    private static void Borwser(WebDriver driver) throws InterruptedException {

        WebDriver driver1;
        driver1 = driver;

        driver1.manage().window().maximize();
        Thread.sleep(2000);

//        driver1.get("https://m.baidu.cn");
        driver1.manage().window().setSize(new Dimension(1200,720));
        Thread.sleep(2000);

        driver1.quit();

    }


    //前进后退
    private static void BrowserGo(WebDriver driver) throws InterruptedException{

        WebDriver driver2;
        driver2 = driver;

        //看看链接地址
        System.out.printf("now accesss %s n", driver.getCurrentUrl());
        Thread.sleep(2000);

        //点击新闻链接
        driver2.findElement(By.linkText("新闻")).click();
        System.out.printf("now accesss %s n", driver.getCurrentUrl());
        Thread.sleep(1000);

        //试试浏览器后退
        driver2.navigate().back();
        System.out.printf("back to %s n", driver2.getCurrentUrl());
        Thread.sleep(1000);

        //试试浏览器往前
        driver2.navigate().forward();
        System.out.printf("forward to %s n", driver2.getCurrentUrl());
        Thread.sleep(1000);

        //试试浏览器刷新
        driver2.navigate().refresh();
        System.out.printf("refresh broswer", driver2.getCurrentUrl());
        Thread.sleep(1000);

        driver2.quit();

    }


    //浏览器元素操作
    private static void BrowserOperation(WebDriver driver) throws InterruptedException{

        WebDriver driver3;
        driver3 = driver;

        WebElement search_text = driver3.findElement(By.id("kw"));
        WebElement search_button = driver3.findElement(By.id("su"));

        // clear() 清除文本 | sendKeys(*value) 模拟按键输入
        search_text.sendKeys("试一下输入");
        Thread.sleep(1000);
        search_text.clear();
        Thread.sleep(1000);
        search_text.sendKeys("Selenium");
        Thread.sleep(1000);
        search_button.click();
        Thread.sleep(1000);
        //sendKeys()方法模拟键盘向输入框里输入内容。我们还可以用它发送键盘按键,甚至用它来指定上传的文件。

        driver3.navigate().back();
        Thread.sleep(1000);

        //搜索到内容以后我回到百度首页,这时候要重新定位元素,不然会报错
        WebElement search_text2 = driver3.findElement(By.id("kw"));
        WebElement search_button2 = driver3.findElement(By.id("su"));

        search_text2.sendKeys("Java");
        search_text2.submit();
        Thread.sleep(1000);
        search_text2.submit();
        Thread.sleep(1000);
        //submit()方法用于提交表单。例如,在搜索框输入关键字之后的“回车” 操作,就可以通过 submit()方法模拟.

        //getSize()
        //getText()
        //getAttribute(name) 获取属性值
        //isDisplayed() 设置元素是否用户可见
        System.out.println("输入框尺寸:" + search_text2.getSize());
        System.out.println("提交按钮尺寸:" + search_button2.getSize());
        System.out.println("提交按钮文本:" + search_button2.getText());
        System.out.println("输入框id:" + search_text2.getAttribute("id") +
                "     输入框Type:" + search_text2.getAttribute("Type"));
        System.out.println("输入框是否可见:" + search_text2.isDisplayed());

        driver3.quit();

    }


    //鼠标操作
    /**
     * 在WebDriver中,这些关于鼠标操作的方法封装在ActionChains类中:
     * ⬇️⬇⬇️
     * contextClick() 右击
     * clickAndHold() 鼠标点击并控制
     * doubleClick() 双击
     * dragAndDrop() 拖动
     * release() 释放鼠标
     * perform() 执行所有Actions中存储的行为,可以理解成是对整个操作的提交动作
     */
    private static void MouseOperation(WebDriver driver) throws InterruptedException{

        WebDriver driver4;
        driver4 = driver;

        //找到百度首页设置按钮,并悬停在按钮上
        WebElement search_setting = driver4.findElement(By.linkText("设置"));
        Actions action = new Actions(driver4);
        action.clickAndHold(search_setting).perform();
        Thread.sleep(3000);

//        //鼠标右键点击指定元素
//        action.contextClick(driver4.findElement(By.id("kw"))).perform();
//        action.click(driver4.findElement(By.id("kw"))).perform();
//        Thread.sleep(2000);

        //鼠标双击指定的元素
        action.doubleClick(driver4.findElement(By.id("su"))).perform();
        Thread.sleep(2000);

        //鼠标拖拽动作,将 search_setting 元素拖放到 search_text 元素的位置
        WebElement search_text = driver4.findElement(By.id("kw"));
        WebElement search_setting2 = driver4.findElement(By.linkText("设置"));
        action.dragAndDrop(search_setting2, search_text).perform();
        Thread.sleep(2000);

        //释放鼠标
        action.release().perform();

        driver4.quit();

        //PS:这里我发现 search_setting 被操作以后如果我在后面的 dragAndDrop 中直接
        //    使用 search_setting 会报错,但是我重新建立一个对象就不会报错 -..-
    }


    //键盘操作
    /**
     * 可以模拟键盘按键
     * 以及组合键,例如 Ctrl+A、 Ctrl+C 等
     * 键盘操作都放在 org.openqa.selenium.Keys 里
     * ⬇️⬇⬇️
     * (Keys.BACK_SPACE) 回格键
     * (Keys.SPACE) 空格键(Space)
     * (Keys.TAB) 制表键(Tab)
     * (Keys.ESCAPE) 回退键(Esc)
     * (Keys.ENTER) 回车键(Enter)
     * (Keys.F1) 键盘 F1
     * ...
     * (Keys.F12) 键盘 F12
     */
    private static void KeyBoardOperation(WebDriver driver) throws InterruptedException{

        WebDriver driver5;
        driver5 = driver;

        WebElement input = driver5.findElement(By.id("kw"));

        //输入下准备数据
        input.sendKeys("Seleniumm");
        Thread.sleep(2000);

        //按下删除键,删除一个 "m"
        input.sendKeys(Keys.BACK_SPACE);
        Thread.sleep(2000);

        //输入空格键
        input.sendKeys(Keys.SPACE);
        input.sendKeys(" + Java");
        Thread.sleep(2000);

        //模拟 Ctrl + a ,全选
        input.sendKeys(Keys.CONTROL, "a");
        Thread.sleep(2000);

        //模拟 Ctrl + x ,剪切
        input.sendKeys(Keys.CONTROL, "x");
        Thread.sleep(2000);

        //模拟 Ctrl + v ,粘贴
        input.sendKeys(Keys.CONTROL, "v");
        Thread.sleep(2000);

        //模拟回车键
        input.sendKeys(Keys.ENTER);
        Thread.sleep(2000);

        driver5.quit();
    }


    //获取页面元素
    private static void Assert(WebDriver driver) throws InterruptedException{

        WebDriver driver6;
        driver6 = driver;

        //获取当前的 title 和 url
        System.out.printf("title of current page is %sn", driver6.getTitle());
        System.out.printf("url of current page is %sn", driver6.getCurrentUrl());

        //百度搜索
        WebElement search = driver6.findElement(By.id("kw"));
        search.sendKeys("Selenium");
        search.sendKeys(Keys.ENTER);
        Thread.sleep(2000);

        System.out.println("======== After search ========");

        //获取当前的 title 和 url 看看
        System.out.printf("title of current page is %sn", driver6.getTitle());
        System.out.printf("url of current page is %sn", driver6.getCurrentUrl());
        Thread.sleep(2000);

        //获取第一条搜索结果的标题
        WebElement result = driver6.findElement(By.xpath("//*[@id="1"]/h3/a"));
        System.out.println(result.getText());
        Thread.sleep(2000);

        driver6.quit();
    }


    //设置页面元素等待
    private static void ElementWait(WebDriver driver) throws InterruptedException{

        WebDriver driver7;
        driver7 = driver;

        //显示等待,针对某个元素
        /**
         * WebDriverWait(driver, 10, 1)
         * driver: 浏览器驱动。 10: 最长超时时间, 默认以秒为单位。 1: 检测的的间隔(步长) 时间, 默认为 0.5s
         */
        WebDriverWait wait = new WebDriverWait(driver7, 10,1);

        wait.until(new ExpectedCondition<WebElement>() {
            @Override
            public WebElement apply(WebDriver webDriver) {
                return webDriver.findElement(By.id("kw"));
            }
        }).sendKeys("Selenium");

        driver7.findElement(By.id("su")).click();
        Thread.sleep(2000);

//        driver7.quit();

        //隐式等待
        /**
         * WebDriver提供的几种方法
         * 1. implicitlyWait (识别对象时的超时时间,过了这个时间如果对象还没找到的话就会抛出NoSuchElement异常)
         * 2. setScriptTimeout (异步脚本的超时时间,WebDriver可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间)
         * 3. pageLoadTimeout (页面加载时的超时时间,因为WebDriver会等页面加载完毕再进行后面的操作,所以如果页面超过设置时间依然没有加载完成,那么WebDriver就会抛出异常)
         */
        //页面加载超时时间设置为 5s
        driver7.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
        driver7.get("https://www.baidu.com/");

        //每一个隐式等待都只对下一个对应的 driver 操作有效
        driver7.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
        driver7.get("https://www.google.com");

        //定位对象给定 3s 的时间,如果 3s 内没有定位到则抛出异常
        driver7.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        driver7.findElement(By.id("kw")).sendKeys("selenium");
        Thread.sleep(2000);

        //异步脚本的超时时间设置为 3s
        driver7.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);

        driver7.quit();
    }


    //定位『一组』元素
    /**
     * 定位一组元素其实就类似于定位元素,只不过用的方法是 findElements ,多一个 "s"
     */
    private static void ElementsPositioning(WebDriver driver) throws InterruptedException {

        WebDriver driver8;
        driver8 = driver;

        WebElement search_text = driver8.findElement(By.id("kw"));
        search_text.sendKeys("Selenium");
        search_text.submit();
        Thread.sleep(2000);

        /**
         * 通过 xpath ,我们找到匹配到的第一页搜索结果 循环打印
         * 这里打印的是第一页搜索的搜索结果,因为搜索结果展示都可以通过 //div/div/h3 定位到
         */
        List<WebElement> search_result = driver8.findElements(By.xpath("//div/div/h3"));

        //打印元素的个数
        System.out.println(search_result.size());

        //循环打印搜索结果的标题
        for (WebElement result : search_result){
            System.out.println(result.getText());
        }

        System.out.println("-------- *..* --------");

        //打印第 n 结果的标题
        WebElement text = search_result.get(search_result.size() - 10);
        System.out.println(text.getText());

        driver8.quit();
    }


    //多表单切换
    /**
     * WebDriver 只能在一个页面上对元素识别与定位,但是对于 frame/iframe 表单内嵌页面上的元素无法直接定位
     * 这时就需要通过 switchTo().frame()方法将当前定 位的主体切换为 frame/iframe 表单的内嵌页面中
     * iframe 基本已经被h5淘汰,不过我们还是要了解一下,以126邮箱登录为例
     */
    private static void SwitchTable(WebDriver driver) {

        WebDriver driver9;
        driver9 = driver;

        driver9.get("http://www.126.com");

        //这里等待 5s ,因为 iframe 的创建比其它包括 scripts 和 css 的 DOM 元素的创建要慢 1-2 个数量级
        driver9.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        WebElement frame = driver9.findElement(By.xpath("//*[@id='loginDiv']/iframe"));
        driver9.switchTo().frame(frame);    //switchTo 还可以切换到弹出框等

        driver.findElement(By.name("email")).clear();
        driver.findElement(By.name("email")).sendKeys("username");
        driver.findElement(By.name("password")).clear();
        driver.findElement(By.name("password")).sendKeys("password");
        driver.findElement(By.id("dologin")).click();

        //切换回默认页面
        driver.switchTo().defaultContent();

    }


    //多窗口切换
    /**
     * getWindowHandle(): 获得当前窗口句柄
     * getWindowHandles(): 返回的所有窗口的句柄到当前会话
     * switchTo().window(): 用于切换到相应的窗口,与上面的switchTo().frame()类似
     */
    private static void WindowsSwitch(WebDriver driver) throws InterruptedException {

        WebDriver driver10;
        driver10 = driver;

        //获得当前窗口句柄
        String search_handle = driver10.getWindowHandle();

        //打开百度注册窗口
        driver10.findElement(By.linkText("登录")).click();
        Thread.sleep(2000);
        driver10.findElement(By.linkText("立即注册")).click();
        Thread.sleep(2000);

        //获得当前窗口的句柄
        String search_handle_register = driver10.getWindowHandle();

        //获取所有窗口句柄
        Set<String> handles = driver10.getWindowHandles();

        //判断是否为注册窗口, 并操作注册窗口上的元素
        for (String handle : handles){
            if (handle.equals(search_handle_register) == false){
                driver10.switchTo().window(handle);
                System.out.println("现在在注册页面");
                Thread.sleep(2000);
                driver10.findElement(By.name("userName")).clear();
                driver.findElement(By.name("userName")).sendKeys("用户名");
                driver.findElement(By.name("phone")).clear();
                driver.findElement(By.name("phone")).sendKeys("电话号码");
                //......
                Thread.sleep(2000);
                //关闭当前窗口
                driver10.close();
            }
        }
        Thread.sleep(2000);

        driver10.quit();
    }


    //下拉框选择
    /**
     * WebDriver提供了 Select 类来处理下拉框
     * Select类用于定位<select>标签。selectByValue()方法符用于选取<option>标签的value值
     */
    private static void SelectWindow(WebDriver driver) throws InterruptedException {

        WebDriver driver11;
        driver11 = driver;

        //以百度搜索设置页面的下拉框为例
        driver11.findElement(By.linkText("设置")).click();
        driver11.findElement(By.linkText("搜索设置")).click();
        Thread.sleep(2000);

        //<select>标签的下拉框选择
        WebElement el = driver11.findElement(By.xpath("//select"));
        Select sel = new Select(el);
        sel.selectByValue("20");
        Thread.sleep(2000);

        driver11.quit();
    }


    //警告框处理
    /**
     * 在WebDriver中处理JavaScript所生成的alert、confirm以及prompt
     * 1. 使用switchTo().alert()方法定位到alert/confirm/prompt
     * 2. 使用text/accept/dismiss/sendKeys等方法进行操作
     * -----------------------------------------------
     * getText(): 返回 alert/confirm/prompt 中的文字信息
     * accept(): 接受现有警告框
     * dismiss(): 解散现有警告框
     * sendKeys(keysToSend): 发送文本至警告框
     * keysToSend: 将文本发送至警告框
     */
    private static void AlertDemo(WebDriver driver) throws InterruptedException {

        WebDriver driver12;
        driver12 = driver;

        //类似百度设置的弹出框是不能通过前端工具对其进行定位的,这时候就要用到switchTo().alert()了
        driver.findElement(By.linkText("设置")).click();
        driver.findElement(By.linkText("搜索设置")).click();
        Thread.sleep(2000);

        //点击保存设置
        driver12.findElement(By.linkText("保存设置")).click();

        System.out.println(driver12.switchTo().alert().getText());

        //接收弹框
        driver12.switchTo().alert().accept();
        Thread.sleep(2000);

        driver12.quit();
    }


    //文件上传 *
    /**
     * 对于通过input标签实现的上传功能,可以将其看作是一个输入框,可通过sendKeys()指定本地文件路径的方式实现文件上传
     */
    private static void FileUpload(WebDriver driver) throws InterruptedException {

        WebDriver driver13;
        driver13 = driver;

        //找到绝对路径
        File file = new File(" ./xxx(路径)/xxx(路径)/文件");
        String filePath = file.getAbsolutePath();
        driver13.get(filePath);

        //定位上传按钮,添加本地文件
        driver13.findElement(By.name("file")).sendKeys("E:\\upload_file.txt");
        Thread.sleep(2000);

        driver13.quit();
    }


    //浏览器Cookie操作
    /**
     * WebDriver操作Cookie相关方法
     * getCookies(): 获得所有cookie信息
     * getCookieNamed(String name): 返回字典的key为"name"的Cookie信息
     * addCookie(cookie dict): 添加Cookie, "cookie dict"指字典对象,必须有 name和 value值
     * deleteCookieNamed(String name): 删除Cookie信息, "name"是要删除的 cookie的名称; "optionsString"是该Cookie 的选项, 目前支持"路径"、"域"
     * deleteAllCookies(): 删除所有的cookie 信息
     */
    private static void BorwserCookie(WebDriver driver) {

        WebDriver driver14;
        driver14 = driver;

        Cookie cookie1 = new Cookie("name", "key-aaaaa");
        Cookie cookie2 = new Cookie("value", "value-bbbbb");
        driver14.manage().addCookie(cookie1);
        driver14.manage().addCookie(cookie2);

        //获得 Cookie
        Set<Cookie> cookies = driver14.manage().getCookies();
        System.out.println(cookies);

        //删除所有 cookie
        //driver.manage().deleteAllCookies();
        driver14.quit();
    }


    //调用JavaScript代码
    /**
     * WebDriver提供了 executeScript()方法来执行 JavaScript代码
     * 以调整浏览器滚动条位置为例
     */
    private static void JavaScript(WebDriver driver) throws InterruptedException {

        WebDriver driver15;
        driver15 = driver;

        //设置浏览器窗口大小
        driver15.manage().window().setSize(new Dimension(700, 600));
        Thread.sleep(2000);

        //百度搜索
        driver15.findElement(By.id("kw")).sendKeys("Selenium");
        driver15.findElement(By.id("su")).click();
        Thread.sleep(2000);

        //将页面滚动条拖动
        ((JavascriptExecutor)driver15).executeScript("window.scrollTo(100,410)");
        Thread.sleep(200);
        ((JavascriptExecutor)driver15).executeScript("window.scrollTo(100,420)");
        Thread.sleep(200);
        ((JavascriptExecutor)driver15).executeScript("window.scrollTo(100,430)");
        Thread.sleep(200);
        ((JavascriptExecutor)driver15).executeScript("window.scrollTo(100,440)");
        Thread.sleep(200);
        ((JavascriptExecutor)driver15).executeScript("window.scrollTo(100,450)");
        Thread.sleep(200);

        driver15.quit();
    }


    //窗口截图
    private static void ScreenShot(WebDriver driver) {

        WebDriver driver16;
        driver16 = driver;

        File srcFile = ((TakesScreenshot)driver16).getScreenshotAs(OutputType.FILE);
        try {
            org.apache.commons.io.FileUtils.copyFile(srcFile, new File("/Users/moooke/screenshot.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        driver16.quit();
    }
}

纯熟精通使用那一个API已经能满意基本的常备测量检验任务,越来越多细节还没各类人展览馆开说明
至于进级内容前面会跟我们享用
期望本文能给有须要的朋友带给一点协助,感谢~

1.5.4多选项(checkbox)
  WebElement checkbox = driver.findElement(By.id("myCheckbox."));
    checkbox.click();
    checkbox.clear();
    checkbox.isSelected();
    checkbox.isEnabled();


  1. Assert.assertTrue(字符串.contains(预期));
  2. Assert.assertEquals(实际值 , 期望值);

Selenium-jar

·Selenium,下载完了后头会有二个jar包,找个位存放好

    By.partialLinkText:
      //那一个措施正是歪曲查询
      WebElement element = driver.findElement(By.partialLinkText("hao"));

常用API

 

IDE-IntelliJ IDEA

·IntelliJ IDEA是自身用过的IDE里比较好用的风流浪漫款,推荐一下

条件搭建完结。

未雨准备干活

 

maven安装

·maven安装是非常简单的,能够参谋:
·for windows
·for mac

接下来就能够服从 Selenium 的API开头啦。

1.5.9上传文件
  WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));
  String filePath = "C:test\uploadfile\media_ads\test.jpg";
  adFileUpload.sendKeys(filePath);

  推而广之。聪明的你,未来是还是不是只缺API了呢。

  录制重放,轻巧严酷(如下图)。就不表明了。

图片 2

然后 Selenium jar包导入 eclipse,方法比很多。只讲最简易的,

1.5.7弹出对话框(Popup dialogs卡塔尔
  Alert alert = driver.switchTo().alert();
    alert.accept();  //确定
    alert.dismiss();  //取消
    alert.getText(卡塔尔(英语:State of Qatar); //获取文本

    By.id:
      WebElement element = driver.findElement(By.id("passwd-id"));

  断言就是用地点的 API给的 getxxx(卡塔尔(英语:State of Qatar)的办法,得到实际值。然后断言是还是不是等于case设定的意料。

 比如须要稳定如下成分:
  <input class="input_class" type="text" name="passwd" id="passwd-id" />

    By.xpath:
      WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

  Selenium 情形搭建(学好Java)

1.8  超时设置
        driver.manage(卡塔尔(قطر‎.timeouts(卡塔尔.implicitlyWait(10, TimeUnit.SECONDS卡塔尔(英语:State of Qatar);      //识别成分时的逾期时间
        driver.manage(卡塔尔.timeouts(卡塔尔.pageLoadTimeout(10, 提姆eUnit.SECONDS卡塔尔国;  //页面加载时的逾期时间
        driver.manage(卡塔尔(قطر‎.timeouts(卡塔尔(英语:State of Qatar).setScriptTimeout(10, TimeUnit.SECONDS卡塔尔国;  //异步脚本的逾期时间

 

1.3  展开测量检验页面
    driver.get("");
    driver.navigate().to("");
      P.S.navigate方法会生出1个Navigator对象,其包装了与导航相关的风华正茂部分办法,比方发展后退等

    By.tagName:
      String test= driver.findElement(By.tagName("form")).getAttribute("name");

1.5.2下拉采撷框(Select卡塔尔国
  Select select = new Select(driver.findElement(By.id("select"))); 
    select.selectByVisibleText(“A”);
    select.selectByValue(“1”);
    select.deselectAll();
    select.deselectByValue(“1”);
    select.deselectByVisibleText(“A”);
    select.getAllSelectedOptions();
    select.getFirstSelectedOption();

1.6  Windows 和 Frames之间的切换
    driver.switchTo(卡塔尔国.defaultContent(卡塔尔(قطر‎;     //重返到最顶层的frame/iframe
    driver.switchTo(卡塔尔国.frame("leftFrame"卡塔尔(قطر‎;    //切换成某些frame:
    driver.switchTo(卡塔尔国.window("windowName"卡塔尔(英语:State of Qatar); //切换成有个别window

Selenium是个 Java 的jar包,所以。一定要搭建好 Java 情况,既Path路线。比方下图

 

1  用webdriver张开三个浏览器
    打开firefox浏览器:
            WebDriver driver = new FirefoxDriver();

    By.className
      WebElement element = driver.findElement(By.className("input_class"));

1.4  页面成分定位
Webdriver提供上边二种办法来定位页面成分,参数是By对像,最常用是By.id和By.name查找。
    findElement   定位有个别成分,若无找到成分会抛出十三分:NoSuchElementException
    findElements     定位大器晚成组成分

By: Jack.Zhong

图片 3

搭建好条件了,那么该怎么操作呢? 还记得怎么使用 hello word 么? 对的。

    By.linkText:
      WebElement element = driver.findElement(By.linkText("百科"));

1.5.3单选项(Radio Button)
  WebElement radio=driver.findElement(By.id("BookMode"));
    radio.click(卡塔尔(英语:State of Qatar);       //采纳某些单选项
    radio.clear(卡塔尔(قطر‎;      //清空有个别单选项
    radio.isSelected(卡塔尔;  //推断有些单选项是还是不是已经被接纳

 

    By.name:
      WebElement element = driver.findElement(By.name("passwd"));

1.2.3 关闭浏览器 
WebDriver driver = new FirefoxDriver();
      driver.close();
      driver.quit();

最后,该怎么断言呢?

  初阶写博客是为着妹子学习,现在发现忽视了最幼功的Selenium教程,所以:从本博客起始编写制定Selenium 入门知识。(学好Java)

  new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='btnAddEnlistAddorUpdate_relType']")));

1.5  如何对页面成分进行操作
1.5.1 输入框(text field or textarea)
  WebElement element = driver.findElement(By.id("passwd-id"));
    element.sendKeys(“test”卡塔尔(قطر‎;//在输入框中输入内容:
    element.clear(卡塔尔(英语:State of Qatar);       //将输入框清空
    element.getText(卡塔尔;     //获取输入框的文书内容:

1.5.5按钮(button)
WebElement btn= driver.findElement(By.id("save"));
    btn.click(卡塔尔;      //点击开关
    btn.isEnabled (卡塔尔国;  //判定按键是或不是enable

API 链接

1.5.8表单(Form)
  Form中的成分的操作和此外的要素操作相通,对成分操作实现后对表单的交给能够:
  WebElement approve = driver.findElement(By.id("approve"));
  approve.click();

  approve.submit(卡塔尔国;//只契合于表单的交付

Selenium 入门 1:(学好Java)

好的,搬运工最初了。

    打开IE浏览器
            WebDriver driver = new InternetExplorerDriver ();

记得点赞哦

 

API(Selenium操作,纯粹搬运工)

1.7  调用Java Script
  JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("JS脚本");

下一篇:没有了

相关新闻推荐

友情链接: 网站地图
Copyright © 2015-2019 http://www.kai-wang.com. AG亚游国际有限公司 版权所有