Web自动化测试-掌握selenium工具用法,使用WebDriver测试Chrome/FireFox网页(Java

秋名山小白 2024-07-09 10:33:01 阅读 50

目录

 一、在Eclipse中构建Maven项目

1.全局配置Maven

2.配置JDK路径

3.创建Maven项目

4.引入selenium-java依赖

二、Chrome自动化脚本编写

1.创建一个ChromeTest类

2.测试ChromeDriver

3.下载chromedriver驱动

4.在脚本中通过System.setProperty方法指定chromedriver的地址

5.测试学习通网址登录功能

三、FireFox自动化脚本编写

1.新建一个FireFoxTest类

2.指定firefox可执行文件路径: webdriver.firefox.bin

3.下载geckodriver驱动

4.在脚本中通过System.setProperty方法指定chromedriver的地址

工具:eclipse(2016)、chrome(v.125)

依赖:selenium-java(3.141.59)

驱动:chromedriver(win64 v125)

配置环境:jdk1.8.0、  maven3.5.2

 一、在Eclipse中构建Maven项目

1.全局配置Maven

点击Windows->Preferences

注意:要先在settinfs.xml中配置阿里云镜像仓库,可参考该文章1~3步骤IDEA 使用自定义MAVEN(maven安装及IDEA配置)_idea 用自定义maven-CSDN博客

同时在installations中add maven路径

2.配置JDK路径

同样是在Preferences中,确认指向的是JDK的路径而不 是JRE的路径

3.创建Maven项目

点击File->New->Project...

勾选Create a simple...

填入组名和项目名,点击Finish

创建完项目列表如下:

4.引入selenium-java依赖

在Maven官网可以下载:Maven Repository: Search/Browse/Explore (mvnrepository.com)

搜索selenium,选择Selenium Java

选择使用度较高的版本,这里选择了4.18.1

拷贝对应的Maven依赖包

点击pom.xml粘贴进去,注意要放在<dependencies></dependencies>里面

保存后,后自动生成Maven Dependendies

二、Chrome自动化脚本编写

1.创建一个ChromeTest类

2.测试ChromeDriver

输入以下代码,点击运行

<code>import org.openqa.selenium.chrome.ChromeDriver;

public class ChromeTest {

public static void main(String[] args) throws Exception{

ChromeDriver driver = new ChromeDriver();

}

}

若报以下错,说明Selenium Java版本过高,需要下载较低版本

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/openqa/selenium/chrome/ChromeDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:763)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)

at java.net.URLClassLoader.access$100(URLClassLoader.java:73)

at java.net.URLClassLoader$1.run(URLClassLoader.java:368)

at java.net.URLClassLoader$1.run(URLClassLoader.java:362)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:361)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

at com.test.ChromeTest.main(ChromeTest.java:9)

这里我将依赖换成了3.141.59版本

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>3.141.59</version>

</dependency>

保存后,再次运行报错以下信息,这是正常情况,因为我们还没有设置Chrome浏览器的驱动

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:847)

at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)

at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35)

at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159)

at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)

at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)

at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)

at com.test.WebTest01.main(WebTest01.java:12)

3.下载chromedriver驱动

因为我的Chrome浏览器的版本是125,在以下链接可以下载对应版本

chromedriver浏览器驱动各版本下载(...113、114、115、116、117、118、119、120、121、122、123、124、125、126、127)(原创) - Z哎呀 - 博客园 (cnblogs.com)

将下载解压的chromedriver.exe复制 

粘贴到项目的resources里面

4.在脚本中通过System.setProperty方法指定chromedriver的地址

<code>// 系统设置Chrome驱动文件的路径

System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");

ChromeDriver driver = new ChromeDriver();

再次运行,此时弹出Chrome窗口,运行成功

5.测试学习通网址登录功能

<code>public static void main(String[] args) throws Exception{

// 系统设置Chrome驱动文件的路径

System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");

ChromeDriver driver = new ChromeDriver();

//最大化浏览器窗口

driver.manage().window().maximize();

// 测试学习通网站

String url = "https://passport2.chaoxing.com";

driver.get(url);

Thread.sleep(3000);

// 通过F12查看对应id

// 输入手机号

WebElement phoneElement = driver.findElement(By.id("phone")); //手机号

phoneElement.clear(); //清空文本输入框中的内容

phoneElement.sendKeys("xxxxxxxxxx"); //在文本输入框中输入内容

String phoneValue = phoneElement.getAttribute("value"); //获取文本框中已经输入的内容

Thread.sleep(1000);

// 输入密码

WebElement passwordElement = driver.findElement(By.id("pwd"));

passwordElement.clear();

passwordElement.sendKeys("xxxxxxxxxx");

String passwordValue = passwordElement.getAttribute("value");

Thread.sleep(1000);

//输出对应值

System.out.println(phoneValue);

System.out.println(passwordValue);

//通过className获取自动勾选框

WebElement checkElement = driver.findElement(By.className("check-input"));

// 使用isSelected()方法检查复选框是否被选中

boolean isSelected = checkElement.isSelected();

// 输出结果

System.out.println("复选框是否被选中: " + isSelected);

// 如单复选框没有被选中

if (!isSelected) {

checkElement.click(); //点击选中

}

Thread.sleep(3000);

// 点击登录

WebElement loginElement = driver.findElement(By.id("loginBtn"));

loginElement.click();

}

点击运行后,将会弹出网址,自动登录

三、FireFox自动化脚本编写

1.新建一个FireFoxTest类

import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

public class FireFoxTest {

public static void main(String[] args) throws Exception{

FirefoxDriver driver = new FirefoxDriver();

}

}

运行后报错以下信息,这是正常情况,原因是firefox安装在其它路径,不是默认的安装路径

Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN10

Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'

System info: host: 'DESKTOP-VMB9KRO', ip: '10.194.105.24', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_121'

Driver info: driver.version: FirefoxDriver

at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:100)

at java.util.Optional.orElseGet(Optional.java:267)

at org.openqa.selenium.firefox.FirefoxOptions.getBinary(FirefoxOptions.java:216)

at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:187)

at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)

at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)

at com.test.FireFoxTest.main(FireFoxTest.java:10)

2.指定firefox可执行文件路径: webdriver.firefox.bin

找到Firefox的exe执行文件,添加路径对应以下代码,再次运行

//指定firefox可执行文件路径

System.setProperty("webdriver.firefox.bin","C:\\Users\\86153\\AppData\\Local\\Mozilla Firefox\\firefox.exe");

FirefoxDriver driver = new FirefoxDriver();

再次报错以下信息,这也是因为没有配置FireFox驱动

Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases

at com.google.common.base.Preconditions.checkState(Preconditions.java:847)

at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)

at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:44)

at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:167)

at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)

at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:190)

at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)

at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)

at com.test.FireFoxTest.main(FireFoxTest.java:11)

3.下载geckodriver驱动

selenium,geckodriver,firefox对应版本官网参考:

Supported platforms — Firefox Source Docs documentation (mozilla.org)

我的FireFox版本是126,下载对应0.34.0版本

进入网址:https://github.com/mozilla/geckodriver ,点击“Tags”,点击0.34.0版本的download,然后选择对应平台的压缩包下载

同理,解压复制到resources文件里

4.在脚本中通过System.setProperty方法指定chromedriver的地址

<code>//指定firefox可执行文件路径

System.setProperty("webdriver.firefox.bin","C:\\Users\\86153\\AppData\\Local\\Mozilla Firefox\\firefox.exe");

// 系统设置gecko驱动文件的路径

System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");

FirefoxDriver driver = new FirefoxDriver();

再次运行,弹出Firefox窗户,成功!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。