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


    目录

     一、在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>里面

    保存后,后自动生成Maven Dependendies

    二、Chrome自动化脚本编写

    1.创建一个ChromeTest类

    2.测试ChromeDriver

    输入以下代码,点击运行

    1. import org.openqa.selenium.chrome.ChromeDriver;
    2. public class ChromeTest {
    3. public static void main(String[] args) throws Exception{
    4. ChromeDriver driver = new ChromeDriver();
    5. }
    6. }

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

    1. 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
    2. at java.lang.ClassLoader.defineClass1(Native Method)
    3. at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    4. at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    5. at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    6. at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    7. at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    8. at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    9. at java.security.AccessController.doPrivileged(Native Method)
    10. at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    11. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    12. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    13. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    14. at com.test.ChromeTest.main(ChromeTest.java:9)

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

    1. org.seleniumhq.selenium
    2. selenium-java
    3. 3.141.59

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

    1. 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
    2. at com.google.common.base.Preconditions.checkState(Preconditions.java:847)
    3. at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)
    4. at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35)
    5. at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159)
    6. at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
    7. at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
    8. at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123)
    9. 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的地址
    1. // 系统设置Chrome驱动文件的路径
    2. System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
    3. ChromeDriver driver = new ChromeDriver();

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

    5.测试学习通网址登录功能
    1. public static void main(String[] args) throws Exception{
    2. // 系统设置Chrome驱动文件的路径
    3. System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
    4. ChromeDriver driver = new ChromeDriver();
    5. //最大化浏览器窗口
    6. driver.manage().window().maximize();
    7. // 测试学习通网站
    8. String url = "https://passport2.chaoxing.com";
    9. driver.get(url);
    10. Thread.sleep(3000);
    11. // 通过F12查看对应id
    12. // 输入手机号
    13. WebElement phoneElement = driver.findElement(By.id("phone")); //手机号
    14. phoneElement.clear(); //清空文本输入框中的内容
    15. phoneElement.sendKeys("xxxxxxxxxx"); //在文本输入框中输入内容
    16. String phoneValue = phoneElement.getAttribute("value"); //获取文本框中已经输入的内容
    17. Thread.sleep(1000);
    18. // 输入密码
    19. WebElement passwordElement = driver.findElement(By.id("pwd"));
    20. passwordElement.clear();
    21. passwordElement.sendKeys("xxxxxxxxxx");
    22. String passwordValue = passwordElement.getAttribute("value");
    23. Thread.sleep(1000);
    24. //输出对应值
    25. System.out.println(phoneValue);
    26. System.out.println(passwordValue);
    27. //通过className获取自动勾选框
    28. WebElement checkElement = driver.findElement(By.className("check-input"));
    29. // 使用isSelected()方法检查复选框是否被选中
    30. boolean isSelected = checkElement.isSelected();
    31. // 输出结果
    32. System.out.println("复选框是否被选中: " + isSelected);
    33. // 如单复选框没有被选中
    34. if (!isSelected) {
    35. checkElement.click(); //点击选中
    36. }
    37. Thread.sleep(3000);
    38. // 点击登录
    39. WebElement loginElement = driver.findElement(By.id("loginBtn"));
    40. loginElement.click();
    41. }

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

    三、FireFox自动化脚本编写

    1.新建一个FireFoxTest类
    1. import org.openqa.selenium.By;
    2. import org.openqa.selenium.WebElement;
    3. import org.openqa.selenium.firefox.FirefoxDriver;
    4. public class FireFoxTest {
    5. public static void main(String[] args) throws Exception{
    6. FirefoxDriver driver = new FirefoxDriver();
    7. }
    8. }

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

    1. Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN10
    2. Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
    3. 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'
    4. Driver info: driver.version: FirefoxDriver
    5. at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:100)
    6. at java.util.Optional.orElseGet(Optional.java:267)
    7. at org.openqa.selenium.firefox.FirefoxOptions.getBinary(FirefoxOptions.java:216)
    8. at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:187)
    9. at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:147)
    10. at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:125)
    11. at com.test.FireFoxTest.main(FireFoxTest.java:10)
    2.指定firefox可执行文件路径: webdriver.firefox.bin

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

    1. //指定firefox可执行文件路径
    2. System.setProperty("webdriver.firefox.bin","C:\\Users\\86153\\AppData\\Local\\Mozilla Firefox\\firefox.exe");
    3. FirefoxDriver driver = new FirefoxDriver();

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

    1. 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
    2. at com.google.common.base.Preconditions.checkState(Preconditions.java:847)
    3. at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)
    4. at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:44)
    5. at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:167)
    6. at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
    7. at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:190)
    8. at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:147)
    9. at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:125)
    10. 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的地址
    1. //指定firefox可执行文件路径
    2. System.setProperty("webdriver.firefox.bin","C:\\Users\\86153\\AppData\\Local\\Mozilla Firefox\\firefox.exe");
    3. // 系统设置gecko驱动文件的路径
    4. System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");
    5. FirefoxDriver driver = new FirefoxDriver();

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

  • 相关阅读:
    【数据挖掘】2019年 Quiz 1-2 整理 带答案
    Java8实战-总结37
    (二)汇编语句组成
    netty系列之:kequeue传输协议详解
    神经网络到底是怎样一回事,神经网络是什么意思
    StarRocks 运维工具 StarGo
    极客日报:天猫双11交易额5403亿;史上最贵的苹果电脑出现; 超7成受访者认为脸书让美国更糟糕
    学会 Arthas,让你 3 年经验掌握 5 年功力!
    pytorch保存和加载模型权重以及CUDA在pytorch中的使用
    【无标题】
  • 原文地址:https://blog.csdn.net/qq_62015542/article/details/139374766