Selenium Java操作指南


本篇文章以Java语言+Chrome浏览器为示例,讲述Selenium基本操作。

什么是selenium?它可以做什么

selenium官方解释叫:Web Browser Automation,也就是Web浏览器自动化。主要用于进行浏览器端的自动化测试。当然,在其他工具的帮助下,也可以实现如安卓、IOS等平台的测试。

比如利用selenium+appium,就可以对安卓和IOS手机进行自动化测试。

另外呢,selenium也可以用来做爬虫——通过selenium操作浏览器,获取网页源码,或者基于fiddler来实现自动抓包等。

下面我们直接进入selenium应用吧。


环境配置

首先需要下载chromedriver.exe,可以到以下地址进行下载:http://npm.taobao.org/mirrors/chromedriver/

需要注意的是,chrome浏览器版本必须与chromedriver.exe版本匹配,可以自定百度匹配规则,下面仅给出一个参考:

Selenium Java操作指南_第1张图片


核心类WebDriver解析

Selenium的核心是WebDriver接口,我们可以透过它看到selenium可以做的事情,下面来看一下源码:

package org.openqa.selenium;

import java.net.URL;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.logging.Logs;

public interface WebDriver extends SearchContext {
  void get(String var1);

  String getCurrentUrl();

  String getTitle();

  List<WebElement> findElements(By var1);

  WebElement findElement(By var1);

  String getPageSource();

  void close();

  void quit();

  Set<String> getWindowHandles();

  String getWindowHandle();

  WebDriver.TargetLocator switchTo();

  WebDriver.Navigation navigate();

  WebDriver.Options manage();
}

非常简洁明了的命名吧,只要略懂英语,甚至直接通过翻译就能够明白每个方法的作用。这里不多赘述,下面就进入实战篇吧!


第一个java+selenium脚本

下面开始编写第一个测试程序吧!

maven依赖:

        <dependency>
            <groupId>org.seleniumhq.seleniumgroupId>
            <artifactId>selenium-apiartifactId>
            <version>3.141.59version>
        dependency>
        <dependency>
            <groupId>org.seleniumhq.seleniumgroupId>
            <artifactId>selenium-chrome-driverartifactId>
            <version>3.14.0version>
        dependency>

selenium测试脚本:

Class Test {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "D://zfh/tools//chromedriver.exe");
        
        WebDriver driver = new ChromeDriver();
        webDriver.get("http://www.baidu.com");
        CommonUtils.sleepSeconds(3);

        webDriver.findElement(By.cssSelector("#kw")).sendKeys("java");
        webDriver.findElement(By.cssSelector("#su")).click();

        CommonUtils.sleepSeconds(5);

        System.out.println(webDriver.getCurrentUrl());
    }
}

场景操作WebDriver都封装好了,但还有一些需要注意的方式,网上大部分资料都是python+selenium,这里给出一些java+selenium特殊操作场景。


Selenium常见操作方法封装

1.执行js脚本

String js = "window.open(\"http://www.baidu.com\");";
((JavascriptExecutor) webDriver).executeScript(js);

2.键盘事件

WebElement searchElement = webDriver.findElement(By.cssSelector("#tsf"));
searchElement.sendKeys(Keys.ENTER);

3.拖拽元素

下面的方法仅给出一个示例:

 /**
   * 移动
   * @param driver
   * @param element
   * @param distance
   * @throws InterruptedException
   */
  public static void move(WebDriver driver, WebElement element, int distance) throws InterruptedException {
    int xDis = distance;// distance to move
    int moveX = new Random().nextInt(10) - 5;
    int moveY = 1;
    Actions actions = new Actions(driver);
    new Actions(driver).clickAndHold(element).perform();//click and hold the moveButton
    Thread.sleep(2000);//slow down
    actions.moveByOffset((xDis+moveX)/2,moveY).perform();
    Thread.sleep((int)(Math.random()*2000));
    actions.moveByOffset((xDis+moveX)/2,moveY).perform();//double move,to slow down the move and escape check
    Thread.sleep(500);
    actions.release(element).perform();
  }

应用篇–极验验证破解、自动化登录、安卓测试

下面给出几个利用selenium实现的自动化实例:

  1. selenium实现携程机票预订(仅供参考)
  2. selenium+java破解极验滑块验证码
  3. java + appium + selenium + 夜神模拟器实现App自动化测试或爬虫

有关selenium的内容就讲解到这里了。个人主要是做java开发的,所以对自动化测试的研究不深,如有错误,欢迎指正。

下一篇将讲述java+selenium+appium如何实现对APP的自动化脚本。

你可能感兴趣的:(爬虫,自动化)