Selenium selenium 入门学习 (一)

顺流而下 · 2017年07月25日 · 2776 次阅读

一、创建 maven 工程
在 pom.xml 依赖中添加 selenium 的 jar 包:

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

二、创建第一个 seleniumTest 类:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumTest {
    public static void main(String[] args) {
        WebDriver webdriver = new ChromeDriver();
        webdriver.get("https://www.baidu.com/");
    }
}

启动测试报错:

Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
    at com.google.common.base.Preconditions.checkState(Preconditions.java:199)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109)
    at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:116)
    at com.pingan.csj.SeleniumTest.main(SeleniumTest.java:8)

报错原因:没有找到 chromeWebDriver,下载 webDriver 放到工程文件下(下载地址: https://sites.google.com/a/chromium.org/chromedriver/downloads

代码中增加设置 WebDriver 路径

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumTest {
    public static void main(String[] args) {
                //配置webDriver路径
        System.setProperty("webdriver.chrome.driver", "D:\\workspace-ta\\csj\\src\\main\\resources\\driver\\chromedriver.exe");
        WebDriver webdriver = new ChromeDriver();
        webdriver.get("https://www.baidu.com/");
    }
}

重新执行;
启动后报错如下:

Starting ChromeDriver 2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b) on port 39480
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: session not created exception
from unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"103372.1","isDefault":true},"id":1,"name":"","origin":"://"}
  (Session info: chrome=59.0.3071.115)
  (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 3.83 seconds
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'PAFSH-D0564', ip: '10.28.81.85', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_80'
Driver info: org.openqa.selenium.chrome.ChromeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:170)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:159)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:116)
    at com.pingan.csj.SeleniumTest.main(SeleniumTest.java:12)

报错原因:webDriver 和 chrome 版本不匹配;报错 session 不能创建一般都是这个原因;找到匹配版本替换 webdriver;
重新执行;执行成功;

三、对代码进行部分优化

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

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

public class SeleniumTest {
    public static void main(String[] args) throws IOException {
        // 通过查找当前路径返回一个规范化路径,这样可以把工程放到不同地方执行了
        String driverPath = new File("./").getCanonicalPath() + "/src/main/resources/driver/chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", driverPath);
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.close();
    }
}
共收到 0 条回复 时间 点赞
顺流而下 selenium 入门学习 (二) 中提及了此贴 07月27日 09:44
顺流而下 selenium 入门学习 (三) 中提及了此贴 07月27日 15:44
顺流而下 selenium 入门学习 (四) 中提及了此贴 08月07日 16:06
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册