Selenium脚本转化Java代码

2023-11-19

Selenium录制的脚本可以转换Java JUnit单元测试,可以使用Java项目管理工具Maven统一运行,从Selenium脚本中导出Java代码,按照如下步骤
在这里插入图片描述
在这里插入图片描述
使用Java运行Selenium脚本,使用Chome导出Java脚本必须下载Chome驱动,如果使用Firefix导出的Java脚本必须下载Firefix驱动。

Firefix驱动
链接:https://pan.baidu.com/s/1-JGr0W-IP_a5yOlsjnPJzg
提取码:erxh

导出的Java代码,需要添加到Java Maven项目中,并添加所需依赖

	    <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.11</version>
	      <scope>test</scope>
	    </dependency>
	    
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.5.3</version>
        </dependency>

修改Java脚本,需要设定Firefox驱动所在目录
System.setProperty(“webdriver.firefox.driver”, “D:\soft\Tester\driver\geckodriver.exe”);

package com.hk.sec;

import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsNot.not;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Alert;
import org.openqa.selenium.Keys;
import java.util.*;
import java.net.MalformedURLException;
import java.net.URL;

public class LoginTest {
  private WebDriver driver;
  private Map<String, Object> vars;
  JavascriptExecutor js;
  
  @Before
  public void setUp() {
	System.setProperty("webdriver.firefox.driver", "D:\\soft\\Tester\\driver\\geckodriver.exe");
    driver = new FirefoxDriver();
    js = (JavascriptExecutor) driver;
    vars = new HashMap<String, Object>();
    
  }
  
  @After
  public void tearDown() {
    driver.quit();
  }
  
  @Test
  public void login() {
    driver.get("http://localhost:8080/");
    driver.manage().window().setSize(new Dimension(1768, 1200));
    driver.findElement(By.cssSelector(".el-form-item:nth-child(1) .el-input__inner")).sendKeys("gf:gfadmin");
    driver.findElement(By.cssSelector(".el-form-item:nth-child(2) .el-input__inner")).sendKeys("1");
    driver.findElement(By.cssSelector(".sys-login")).click();
    vars.put("vcode", driver.findElement(By.cssSelector(".el-form-item:nth-child(1) .el-input__inner")).getAttribute("value"));
    vars.put("vcode", js.executeScript("var start=document.cookie.indexOf(\'vcode=\')+\'vcode=\'.length; var end=document.cookie.indexOf(\';\',start); if(end == -1) 	return document.cookie.substring(start); else 	return document.cookie.substring(start, end);"));
    driver.findElement(By.cssSelector(".el-form-item:nth-child(3) .el-input__inner")).sendKeys(" vars.get(\"vcode\").toString()");
    driver.findElement(By.linkText("登录")).click();
  }
}

运行时可能遇到异常
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V
通常是因为guava版本问题

			      <groupId>com.google.guava</groupId>
			      <artifactId>guava</artifactId>

需要使用正确guava版本,selenium-java会引入正确的guava版本,如果其他Jar引入guava版本,需要排除它

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

例如:
sharding-jdbc-core也会引入guava,必须排除它

		<dependency>
		    <groupId>org.apache.shardingsphere</groupId>
		    <artifactId>sharding-jdbc-core</artifactId>
		    <version>4.1.0</version>
	        <exclusions>
	            <exclusion>
			      <groupId>com.google.guava</groupId>
			      <artifactId>guava</artifactId>
	            </exclusion>
	        </exclusions>
		</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium脚本转化Java代码 的相关文章

  • test

    1 overrides the s4 notdlg class items as display none lt script type 61 34 text javascript 34 gt var fV4UI 61 true lt sc
  • Java线程test

    1 银行有一个账户有两个储户存分别向同一个账户存3000 元 xff0c 每次存1000 xff0c 存3次 每次存完打印账户余额 问题 xff1a 该程序是否有安全问题 xff0c 如果有 xff0c 如何解决 xff1f 提示 1 xf
  • Permutation test(排列(组合)检验)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 对Permutation test 的首次描述可追溯到上个世纪30年代 Fisher 1935 和Pitman 1937 介绍了其在线性统计模型中的应用 但该法计算工作量过
  • Permutation test

    Outlines Goals and strategyThe simple conditionThe complex condition Goals and strategy Goals Estimate the distribution
  • 查询是: LOCK TABLE test.xx_test IN ACCESS SHARE MODE问题解决办法

    如题所示 xff0c 这个问题是我在postgresql中使用pg dump备份多个schema的表时遇到的问题 bin pg dump dbname 61 postgresql dbuser 123456 64 localhost 543
  • 1:Unit test and main function-Java API 实战

    目录 1 抛出企业问题 xff0c 脱离main测试 xff0c 模块化编程2 Junit单元测试的含义和用途3 怎么获取各种Jar包 xff1f Maven Repository 获取各类各个版本的jar xff0c 这就是仓库 脱离老师
  • Using lxd to do vlan test (by quqi99)

    作者 xff1a 张华 发表于 xff1a 2022 08 15 版权声明 xff1a 可以任意转载 xff0c 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 问题 客户说sriov虚机里收不着arp reply 他们的s
  • my cloud test bed (by quqi99)

    作者 张华 发表于 2023 03 10 版权声明 可以任意转载 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 问题 有一台NUC minipc 配置是 CPU i7 13700H 16核20线程 内存 16G 32G 4
  • Test Case Framework (TCF) 简介

    TCF is a system that simplifies the creation and execution of test cases automation for that matter with minimal setup e
  • JS的test()方法

    解析 解释 xff1a js的test 方法用于检测一个字符串是否匹配某个格式 语法 xff1a RegExpObject test string 返回值 xff1a 如果String中含有RegExpObject中匹配的字符返回true
  • INVALID TASK ‘.TEST.SKIP=TRUE’: YOU MUST SPECIFY A VALID LIFECYCLE PHASE […]

    问题 当我们在用如下命令行进行编译时 mvn Dmavne test skip span class token operator 61 span ture clean span class token function install s
  • px4混控器流程理解 motor test qgc调试

    sys autostart 索引是5000 启动是加载5000 generic ground vehicle文件 xff0c 此脚本指定混控脚本文件55行是rover generic 华丽分界线 四悬翼 sys autostart 索引是4
  • NS3 的 ipv4-static-routing-test-suite 源码分析

    下面进行源码注释 xff1a End to end tests for Ipv4 static routing include 34 ns3 boolean h 34 include 34 ns3 config h 34 include 3
  • 详解测试驱动开发 Test Driven Development(TDD)

    TDD的目标 Clean Code That Works 这句话的含义是 xff0c 事实上只做两件事情 xff1a 让代码奏效 xff08 Work xff09 和让代码洁净 xff08 Clean xff09 xff0c 前者是把事情做
  • boringssl android编译,boringssl_self_test.cpp

    boringssl self test cpp Copyright C 2018 The Android Open Source Project Licensed under the Apache License Version 2 0 t
  • 几个C++ online test 网站

    http www mycppquiz com list php http www codelect net TestDetails Cplusplus Senior Level Test http careerride com c 43 4
  • proto_cmake_test

    proto cmake test Proto与CMAKE结合编译源代码 工程编译 span class token function cd span build cmake span class token punctuation span
  • IDEA的Junit安装(添加jar包)

    1 安装junit插件 1 打开IDEA 点击文件 选择设置 setting 2 选择Plugins gt 点击Browse repositories 3 在搜索框中搜索Junit gt 找到Junit Generator V2 0点击 g
  • Java程序中对Service进行Mock

    Java程序中对Service进行Mock 背景 Servie Test Service 背景 在项目中往往需要对service逻辑进行单元测试验证 这里采用mockito对dao数据进行模拟 验证service逻辑 Servie pack
  • 嵌入式经典面试题

    文章目录 一 常见面试题 1 用预处理指令 define 声明一个常数 用以表明1年中有多少秒 忽略闰年问题 2 写一个 标准 宏MIN 这个宏输入两个参数并返回较小的一个 3 预处理器标识 error的目的是什么 4 数据声明 5 sta

随机推荐

  • 区块链学习笔记(六)——区块链的分类

    文章目录 一 强调 二 公有链 联盟链 私有链 1 公有链 2 联盟链 3 私有链 总结 一 强调 先做一下重复强调 区块链技术是集分布式存储 点对点传输 共识机制 加密算法 数据区块等概念于一体的新兴技术集合 二 公有链 联盟链 私有链
  • 基于ETest的航电系统通用测试平台

    随着电子技术的发展 航电系统在飞机整机中的重要性飞速提升 据统计 近年来航电系统在飞机出厂成本中的比例直线上升 航电系统研发成本已占飞机研制总成本的近30 并保持着持续扩大的趋势 测试保障作为航电产业链至关重要的一环 贯穿航空电子设备 研发
  • SpringBoot读取Resource下文件的四种方式

    SpringBoot读取Resource下文件的四种方式 1 ClassPathResource classPathResource new ClassPathResource static image a jpg InputStream
  • connect函数的用法

    作者 曾宏安 华清远见嵌入式学院讲师 在网络编程中 connect函数经常用来在套接字上初始化连接 无论是流式套接字还是数据报套接字都可以使用connect函数 但含义却不一样 下面我们分别来讨论一下 一 流式套接字 流式套接字通常使用的是
  • CSS字体样式属性(字体设置)

    font size 字号大小 font size属性用来设置字符 该属性的值有两种单位 1 相对长度单位 像素单位 px 2 绝对长度单位 使用非常少 font family 字体 font family属性用于设置字体 网页常用的字体 宋
  • 学习太极创客 — ESP8226 (十三)OTA

    视频链接 https www bilibili com video BV1L7411c7jw p 23 vd source b91967c499b23106586d7aa35af46413 资料链接 http www taichi make
  • bazel构建使用clang工具链

    最近使用clang工具构建bazel项目 官方文档给的step较为繁琐 这里暂时记录一下 以便后期可以直接去用 这里具体的规则不进行详细解释 具体看官方文档有关描述 查看预定义变量列表 使用如下命令 bazel info show make
  • 【华为OD统一考试A卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • module ‘tensorflow‘ has no attribute ‘global_variables_initializer‘(问题已解决)

    最近在学深度学习 一开始就遇到了个很狗血的问题 总会报出例如下面的这种错误 y hat tf constant 36 name y hat y tf constant 39 name y loss tf Variable y y hat 2
  • xpath通过text()方式获取div节点下的文本存在bug

    环境 scrapy1 8 python3 7 3 div块如下 div class li b l span class money 12k 20k span 经验3 5年 大专 div 用形如 x response xpath div cl
  • sparkstreamming 消费kafka(2)

    spark streaming提供了两种获取方式 一种是同storm一样 实时读取缓存到内存中 另一种是定时批量读取 这两种方式分别是 Receiver base Direct 一 Receiver base Spark官方最先提供了基于R
  • 使用Jenkins+Gitlab集成Flutter自动化打包(Android),并发布到蒲公英

    本文记录一下使用Jenkins Gitlab集成Flutter自动化打包的过程 在集成时 Jenkins和Gitlab是已经搭建好的 并且Gitlab上已经上传了Flutter项目 Jenkins自动构建打包 安装Gitlab插件 因为Je
  • Js 关于收藏本页和设置首页

  • 交换机二三层转发原理简单总结

    首先二层转发是基于MAC地址转发 三层转发基于IP地址转发 但是这并不意味着仅仅依靠IP地址就能转发 三层转发是建立在二层的基础上的 而仅仅依靠MAC地址是能够转发的 另外 由于二三层转发基于MAC地址 IP地址 FDB表 MAC地址学习
  • 2019年感:忆往昔考博岁月,看今朝花样年华

    人生的际遇谁又能说清楚 就像师范类毕业的女神梦想着当一名老师 结果却阴差阳错穿上了警服 而本应该奔波北上广深的程序员 却成为了一名大学老师 两条平行线的男女 却结为了连理 再如 一心准备中科院却因英语差一分惜败 几乎裸考的学校却可能结出果实
  • 多模态预训练模型CLIP:中文版本开放使用

    公众号原文 关注公众号 获取一手论文咨询 多模态预训练模型CLIP 中文版本开放使用 中文项目地址 https github com real brilliant chinese clip in tensorflow 01 背景 CLIP是
  • 【车联网原型系统|四】adhoc组网+frp内网穿透

    物联网原型系统导航 车联网原型系统 一 项目介绍 需求分析 概要设计 https blog csdn net weixin 46291251 article details 125807297 车联网原型系统 二 数据库 应用层协议设计 h
  • 【Python三大结构练习4】

    目录 1 哥德巴赫猜想 2 判断是否回文 3 Add ings 4 身份证号掩盖出生日期 5 敏感词过滤 1 哥德巴赫猜想 题目描述 一个大正偶数总可以分解为两个质数之和 试编写程序验证哥德巴赫猜想 输入一个正偶数 输出该偶数的质数和分解
  • 使用 Spring 2.5 注释驱动的 IoC 功能

    基于注释 Annotation 的配置有越来越流行的趋势 Spring 2 5 顺应这种趋势 提供了完全基于注释配置 Bean 装配 Bean 的功能 您可以使用基于注释的 Spring IoC 替换原来基于 XML 的配置 本文通过实例详
  • Selenium脚本转化Java代码

    Selenium录制的脚本可以转换Java JUnit单元测试 可以使用Java项目管理工具Maven统一运行 从Selenium脚本中导出Java代码 按照如下步骤 使用Java运行Selenium脚本 使用Chome导出Java脚本必须