java+selenium3

2023-11-02

一、环境搭建

1、JDK安装(配置环境变量)

2、selenium下载

3、测试Demo

public static void main(String[] args) throws InterruptedException {
    //todo System.setProperty(String key,String value):设置指定键值对的系统属性
    System.setProperty("webdriver.chrome.driver","D:/自动化测试/chromedriver_win32/chromedriver.exe");
    WebDriver driver=new ChromeDriver();
    driver.get("http://www.baidu.com");
    driver.findElement(By.id("kw")).sendKeys("巡阴人");
    driver.findElement(By.id("su")).click();
    Thread.sleep(2000);
    driver.close();
}
复制代码

4、八大定位元素

public static void main(String[] args) throws InterruptedException {
    //todo System.setProperty(String key,String value):设置指定键值对的系统属性
    System.setProperty("webdriver.chrome.driver","D:/自动化测试/chromedriver_win32/chromedriver.exe");
    WebDriver driver=new ChromeDriver();
    driver.get("http://www.baidu.com");
    //todo 1.根据id属性选择元素
    driver.findElement(By.id("kw")).sendKeys("逆流成河");
    //todo 2.根据name属性选择元素
    driver.findElement(By.name("wd")).sendKeys("逆流成河");
    //todo 3.根据class属性选择元素
    driver.findElement(By.className("s_ipt")).sendKeys("逆流成河");
    //todo 4.根据xpath选择元素
    driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("逆流成河");
    //todo 5.根据css选择器选择元素(常用)
    driver.findElement(By.cssSelector("#kw")).sendKeys("逆流成河");
    //todo 6.根据链接文本选择元素
    driver.findElement(By.linkText("新闻")).click();
    //todo 7.根据链接部分文本选择元素
    driver.findElement(By.partialLinkText("新")).click();
    //todo 8.根据标签名选择元素
    driver.findElement(By.tagName("input")).sendKeys("逆流成河");
    Thread.sleep(2000);
    driver.close();
}
复制代码

5、常用方法

public static void main(String[] args) throws Exception {
    //todo 5.System.setProperty(String key,String value):设置指定键值对的系统属性
    System.setProperty("webdriver.chrome.driver","D:/自动化测试/chromedriver_win32/chromedriver.exe");
    WebDriver driver=new ChromeDriver();
    driver.get("http://www.baidu.com");
    //todo 1.sendKeys:输入值
    driver.findElement(By.id("kw")).sendKeys("逆流成河");
    //todo 2.getAttribute:获取属性值
    System.out.println(driver.findElement(By.id("kw")).getAttribute("name"));
    //todo 3.清除操作
    driver.findElement(By.id("kw")).clear();
    //todo 4.元素是否显示(boolean)
    System.out.println(driver.findElement(By.id("kw")).isDisplayed());
    //todo 6.getText:获取值
    System.out.println(driver.findElement(By.linkText("新闻")).getText());
    //todo 7.最大化窗口
    driver.manage().window().maximize();
    //todo 8.元素是否被选择(多用于单选框、复选框)(boolean)
    System.out.println(driver.findElement(By.id("kw")).isSelected());
    //todo 9.submit:提交操作
    driver.findElement(By.id("kw")).sendKeys("逆流成河");
    driver.findElement(By.id("su")).submit();
    driver.findElement(By.id("su")).click();
    //todo 10.getWindowHandle:获取窗口句柄
    System.out.println(driver.getWindowHandle());
    //todo 11.getCurrentUrl:获取url
    System.out.println(driver.getCurrentUrl());
    Thread.sleep(2000);
    driver.close();
}
复制代码

6、悬停和下拉框以及复合定位

public static void main(String[] args) throws Exception {
    System.setProperty("webdriver.chrome.driver","D:/自动化测试/chromedriver_win32/chromedriver.exe");
    WebDriver driver=new ChromeDriver();
    driver.get("http://www.baidu.com");
    //todo clickAndHold:悬停
    Actions action=new Actions(driver);
    action.clickAndHold(driver.findElement(By.cssSelector("#u1 > a.pf"))).perform();
    Thread.sleep(2000);
    driver.findElement(By.cssSelector("#wrapper > div.bdpfmenu > a.setpref")).click();
    Thread.sleep(2000);
    //todo 下拉框
    Select select=new Select(driver.findElement(By.cssSelector("#nr")));
    //todo 1.selectByIndex:根据索引选择
    select.selectByIndex(1);
    //todo 2.selectByValue:根据值选择
    select.selectByValue("50");
    //todo 3.selectByVisibleText:根据下拉文本值选择
    select.selectByVisibleText("每页显示10条");
    //todo 4.getOptions().get(i):获取列表项通过点击选择
    select.getOptions().get(2).click();
    for(int i=0;i<select.getOptions().size();i++){
        select.getOptions().get(i).click();
        Thread.sleep(2000);
    }
    //todo 复合定位(定位一组元素)
    for(int i=0;i<driver.findElements(By.name("SL")).size();i++){
        driver.findElements(By.name("SL")).get(i).click();
        Thread.sleep(1000);
    }
    Thread.sleep(2000);
    driver.close();
}
复制代码

7、frame操作和文件上传

public static void main(String[] args)throws Exception {
    System.setProperty("webdriver.chrome.driver","D:/自动化测试/chromedriver_win32/chromedriver.exe");
    WebDriver driver=new ChromeDriver();System.setProperty("webdriver.chrome.driver","D:/自动化测试/chromedriver_win32/chromedriver.exe");
    driver.get("https://mail.qq.com/cgi-bin/loginpage");
    driver.manage().window().maximize();
    //todo frame
    //todo driver.switchTo().frame(WebElement):切换到frame页
    driver.switchTo().frame(driver.findElement(By.id("login_frame")));
    driver.findElement(By.id("u")).sendKeys("2788386852@qq.com");
    driver.findElement(By.id("p")).sendKeys("XIAOqin=900216");
    driver.findElement(By.id("login_button")).click();
    Thread.sleep(2000);

    driver.findElement(By.id("composebtn")).click();
    driver.switchTo().frame(driver.findElement(By.id("mainFrame")));
    Thread.sleep(5000);
    driver.findElement(By.cssSelector("#toAreaCtrl > div.addr_text > input")).sendKeys("734867098@qq.com");
    driver.findElement(By.id("subject")).sendKeys("xunyinren");
    //todo 上传附件
    //todo sendKeys(文件路径)
    driver.findElement(By.name("UploadFile")).sendKeys("C:\\Users\\Administrator\\Desktop\\123987.sql");
    //todo driver.switchTo().defaultContent():返回默认页面
    driver.switchTo().defaultContent();
    Thread.sleep(2000);
    driver.findElement(By.id("readmailbtn_link")).click();
}
复制代码

二、测试框架TestNg

转载于:https://juejin.im/post/5c6ba34351882562d17d9626

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java+selenium3 的相关文章

  • 群组名称不能以数字开头?

    看来我不能使用像这样的正则表达式 P lt 74xxx gt 0 9 重新打包会引发错误 sre constants error bad character in group name u 74xxx 我似乎无法使用以数字开头的组名称 为什
  • 在 pandas eval 中调用 round()、ceiling()、floor()、min()、max()

    正如标题所说 有没有办法在 pandas eval 中支持 round ceiling min max floor 函数 数据框 import pandas as pd import numexpr as ne op d ID 1 2 3
  • 在 Android 中使用 lambdaj

    有人尝试过在android开发中使用lambdaj库吗 当我创建一个简单的小型java应用程序时 它对我来说工作得很好 但我无法在android应用程序中使用它 UPDATE 我正在添加 lambdaj lambdaj 2 3 2 with
  • argparse add_argument 别名

    有没有办法使用 argparse 创建别名 例如 我想做这样的事情 parser add argument foo parser add argument alias bar foo 也就是说 使用 bar应该相当于使用 foo 您可以简单
  • python中终止进程的跨平台方法

    当我尝试使用 subprocess Popen terminate 或 Kill 命令终止 Windows 中的进程时 出现访问被拒绝错误 如果文件不再存在 我真的需要一种跨平台的方式来终止进程 是的 我知道这不是做我正在做的事情的最优雅的
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 用java解密AES加密文件

    我有一个使用 AES 使用 java 应用程序加密的文件 我还有一个加密的密钥文件 但我不明白如何使用密钥来解密文件 大多数教程和示例都会在一个地方创建临时随机密钥 加密文件和解密 所以 问题是如何指定解密时必须使用的密钥 EDIT 我发现
  • NLTK 无法找到 stanford-postagger.jar!设置CLASSPATH环境变量

    我正在开发一个项目 需要我使用 nltk 和 python 来标记令牌 所以我想用这个 但遇到了一些问题 我浏览了很多其他已经提出的问题和其他论坛 但我仍然无法解决这个问题 问题是当我尝试执行以下命令时 from nltk tag impo
  • 如何在最短的时间内克隆java中的输入流

    有人可以告诉我如何克隆输入流 并花费尽可能少的创建时间吗 我需要多次克隆输入流以使用多种方法来处理 IS 我尝试了三种方法 但由于这样或那样的原因 事情不起作用 方法 1 感谢 stackoverflow 社区 我发现以下链接很有帮助 并将
  • SQLAlchemy 是否会从同一连接重置 SQLAlchemy 会话之间的数据库会话?

    SQLAlchemy 利用连接池 这意味着相同的连接可以在不同的 SQLAlchemy 会话之间重复使用 但是 单个 SQLAlchemy 会话包含在其自身内并在关闭后被丢弃 然而 连接保持 活动 状态 我想使用 set config 将一
  • 我以为 Python 通过引用传递了所有内容?

    采取以下代码 module functions py def foo input new val input new val module main py input 5 functions foo input 10 print input
  • 在Java中一个接一个地播放WAV文件

    我正在尝试玩几个WAV http en wikipedia org wiki WAV文件一个接一个 我尝试了这个方法 for String file audioFiles new AePlayWave file start 但这会同时播放它
  • GAE - Eclipse 中的开发服务器未更新?

    我在 Eclipse 上使用 Google AppEngine 开发服务器 我的本地网页似乎没有更新 直到我在开发服务器上进行了多次重新启动 使用 Eclipse 中的 运行 或 调试 按钮 我究竟做错了什么 基本流程是 更改 java 文
  • 在IPython笔记本中自动播放声音

    我经常在 IPython 笔记本中运行长时间运行的单元 我希望笔记本在单元完成执行时自动发出蜂鸣声或播放声音 有没有办法在 iPython 笔记本中执行此操作 或者我可以在单元格末尾放置一些命令来自动播放声音 我正在使用 Chrome 如果
  • 连接 Flask Socket.IO Server 和 Flutter

    基本上 我有一个套接字 io 烧瓶代码 import cv2 import numpy as np from flask import Flask render template from flask socketio import Soc
  • 使用 python pyad 访问对象 [] 时出现问题

    我在尝试使用 pyad 访问活动目录用户属性时遇到问题 这是我的代码 user pyad aduser ADUser from cn tuser print user get attribute lastLogonTimestamp 这些是
  • 如何实现再次播放功能?

    我希望在游戏结束时得到提示 如果我还想再玩一次的话 并使用 Y N 输入 退出游戏或重复游戏 我该如何以最有效的方式解决这个问题 编辑 描述资源路径位置类型 类型 Main Main java ScaredyCat src se grupp
  • 用于将字符串与通配符模式进行匹配的递归函数

    所以我一整天都在试图解决这个作业 只是无法完成 以下函数接受 2 个字符串 第二个 不是第一个 可能包含 的 星号 An 是字符串的替换 空 1个字符或更多 它可以出现 仅在s2中 一次 两次 更多或根本不出现 它不能与另一个相邻 ab c
  • java.lang.NoClassDefFoundError:com.google.ads.AdView

    我正在尝试将 admob 广告合并到我的应用程序中 到目前为止我已经添加了以下代码 在我的应用程序主要活动的 onCreate 方法中 adView new AdView this AdSize BANNER my code number
  • 跳过一行GridBagLayout

    我在 JFrame 上使用 GridBagLayout 我希望能够跳过一两行 但将这些行显示为空白 然后在这些行后面有一个按钮 我在文档中找不到任何方法来执行我所描述的操作 有谁知道我可以执行此操作的任何方法吗 发现它比添加空组件干净得多

随机推荐

  • [转载]ubuntu编写shell文件基础

    https www cnblogs com tnxk archive 2012 08 09 2630195 html
  • C语言:二叉排序树的操作

    实现的功能 1 建立二叉排序树 2 输出中序遍历结果 3 查找数据 0 退出 代码 include
  • conda与pip

    通过conda info命令查看当前的镜像源 设置conda的镜像源 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda
  • 网络安全的不同角度

    扫盲 相关概念 DevSecOps FreeBuf咨询 快HVV了 聊聊攻防演练中安全产品的安全性 FreeBuf甲方群 https www freebuf com articles neopoints 266464 html FreeBu
  • gdb常用操作

    一 gdb功能介绍 程序调试工具 可以动态的改变程序的执行环境 二 gdb使用 1 运行 1 gdb 程序名 2 gdb 程序名 p 进程号 3 gdb运行 输入attach 进程号 2 查看变量 1 p 变量名 2 p 10x 变量名 3
  • JSON语法及JSON定义规范化

    一 前言 JSON JavaScript Object Notation JS对象标记 是一种轻量级的数据交换格式 它是基于 ECMAScript 的一个子集 采用完全独立于编程语言的文本格式来存储和表示数据 二 JSON 语法规则 在 J
  • Phoneme的相关概念以及Triphone

    Phoneme的相关概念以及Triphone 目录 Phoneme的相关概念以及Triphone 前言 可用来训练HMM的基本单位 1 词 words 3 单音 syllables 4 音素 phonemes 5 Triphone 中文 基
  • Android App完全退出方式

    第一种方式是创建一个MyApplication类 继承Application 在AndroidManifest xml的application标签配置android name 并在其中加入一个 List
  • 信捷 XD PLC 16位整数转换为双精度浮点数

    完成16位整数转换为双精度浮点数 信捷XD PLC需要两个指令 逐步转换 一个指令搞不定 具体的 第1步 int16 gt int32 第2步 int32 gt Double 例子 比如说将D0转换成浮点数放到D100 D103
  • 阿里云服务器开放宝塔面板8888端口配置安全组教程

    默认情况下 阿里云处于安全考虑 仅开放了80和3389端口 云吞铺子以开放8888端口为例 1 登录到云服务器ECS控制台 2 在实例列表中 点击 更多 网络和安全组 安全组配置 或者在这 3 手动添加安全组规则 云吞铺子以添加宝塔面板管理
  • ubuntu16.04安装opencv3.4.5时出错及解决方法

    ubuntu16 04安装opencv3 4 5时 参考这篇文章 运行 cmake D CMAKE BUILD TYPE Release D CMAKE INSTALL PREFIX usr local 出现了错误 CMake Error
  • Go语言基础(一)

    Go语言具有支持高并发 语法简洁等特点 变量 Go语言中变量的定义可以直接定义 不需要基本数据类型 这些会自动帮你定义 但是你也可以写出变量的类型 放在变量的后面 还有一种是直接使用 来定义变量 var a initial var b c
  • spring cloud 通过Ribbon配置负载均衡 和Hystrix熔断器

    前言 本篇博客是基于上一篇博客的再度扩展springcloud项目配置 Ribbon是用于实现负载均衡的 Hystrix是用于超时的方法返回一个兜底数据的 Ribbon配置 1 在RestTemplate上加注解 LoadBalanced
  • C++类中嵌套enum(枚举)、union(联合)、struct(结构体)类型

    1 枚举 include
  • 一款非常萌的桌面工具---bongo cat mver0.1.6 附使用教程

    bongo cat mver是一款画风非常萌的桌面工具 由B站用户原创制作 具有人性化UI设置界面 可用于装饰视频或直播 能够根据鼠标 键盘操作做出相应的动作 超级可爱 该软件是以小猫的形式展现 共有四种模式供用户选择 包括键鼠 绘画 手柄
  • 5G+AIoT“零碳”解决方案

    碳交易 目前被认为是用市场机制调整碳排放的有效工具 通过有限的碳排放量分配 政府部门可以对碳排放配额进行总量控制 使纳入市场的控排企业受到碳排放限额的限制 排放量少于配额的企业可将多余的配额出来销售 反之超配额的企业 就需要到市场上去购买排
  • debian linux vnc,在Debian 9上,如何安装和配置VNC

    本教程描述了如何在Debian 9上安装和配置VNC服务器 我们还将向您展示如何创建SSH隧道并安全地连接到VNC服务器 先决条件 在继续本教程之前 请确保您以具有sudo特权的用户身份登录 安装桌面环境 你的Debian server可能
  • IOS9中出现的错误

    1 Bitcode 错误提示 ld Applications Cocos frameworks cocos2d x 3 8 1 prebuilt ios libcocos2d iOS a CCEAGLView ios o does not
  • vue3之后台管理系统权限

    权限概括 后台管理系统中权限是不可少的一部分 例如 页面权限 菜单权限 按钮权限 路由权限等 文章目录 权限概括 定义权限 一 用户登录和认证 二 前端路由控制 三 菜单权限 四 数据级别的权限控制 五 前端界面的反馈 六 按钮权限 实现思
  • java+selenium3

    一 环境搭建 1 JDK安装 配置环境变量 2 selenium下载 3 测试Demo public static void main String args throws InterruptedException todo System