selenium常用API的使用

news2024/11/25 14:13:23

目录

定位元素(findElement)

CSS选择器定位 

xpath选择器定位 

CSS选择器和xpath选择器区别 

操作测试对象 

click:点击

sendKeys:输入文本框内容

clear:清除文本框内容 

text:获取元素文本内容

getText()(获取一般文本内容)

getAttribute() (获取属性(value))

submit:提交

submit和click的区别 


定位元素(findElement)

CSS选择器定位 

首先找到指定的页面,找到后确认要定位的元素:如百度搜索首页的搜索框 

打开开发者工具,点击元素:

 找到对应的类,将类名复制下来,调用webdriver的findElement方法,通过By将类传入(使用css选择器) 

WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));

在文本框中输入使用sendKeys方法即可:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class Main {
    public static void main(String[] args) {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        //定位元素
        //找到百度搜索框
       WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));
       //输入软件测试
        element.sendKeys("软件测试");

    }
}

 点击运行后会先打开Chrome浏览器百度搜索页面,之后在文本框输入“软件测试”进行搜索

更多使用css选择器的方法:(了解)

id选择器(#id)

类选择(class)

标签选择(标签名)

后代选择 (父级选择器,子级选择器)等等

xpath选择器定位 

xpath选择器定位和css选择器定位类似,右键标签进行复制xpath 

WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));

xpath定位的几个用法:

绝对路径(/html/head/title(不常用))

相对路径 

相对路径+索引(//form/span[1]/input)

相对路径+属性值(//input[@class="s_ipt"])

相对路径+通配符 (//*[@*="su"])

相对路径+文本匹配(//a[text()="新闻"])

CSS选择器和xpath选择器区别 

首先css选择器效率比xpath选择器高(css是和html捆绑的,xpath是和DOM捆绑的(DOM是js和html的中介)) 

其次xpath功能上要比css更强大,比如xpath可以选中多个元素,支持文本定位和上下移动。

操作测试对象 

selenium中操作测试对象常用的有以下几种:

click:点击

如在百度搜索框输入“软件测试”后点击百度一下:

 WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
        //输入软件测试
        element.sendKeys("软件测试");
        //找到百度一下按钮
        //进行点击
        webDriver.findElement(By.cssSelector("#su")).click();

sendKeys:输入文本框内容

如在百度搜索框输入“软件测试” 

WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
        //输入软件测试
        element.sendKeys("软件测试");

clear:清除文本框内容 

如在百度搜索框中输入“软件测试”后点击百度一下,然后将文本框清除,输入“前端vue”进行搜索

private static void test02() throws InterruptedException {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
        webDriver.findElement(By.cssSelector("#su")).click();
        webDriver.findElement(By.cssSelector("#kw")).clear();
        sleep(3000);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("前端vue");
        webDriver.findElement(By.cssSelector("#su")).click();

    }

text:获取元素文本内容

getText()(获取一般文本内容)

如获取百度搜索首页的百度热搜第一条:

    private static void test03() {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        //获取到百度热搜第一条的内容
        String res = webDriver.findElement(By.xpath("//*[@id=\"hotsearch-content-wrapper\"]/li[1]/a/span[2]"))
                .getText();
        System.out.println(res);


    }

getAttribute() (获取属性(value))

 在getAttribute当中传入name,可以获取到value

    private static void test04() {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        //获取百度一下的value值
       String res= webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
        System.out.println(res);
    }

submit:提交

使用submit搜索“软件测试”:

    private static void test05() {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        WebElement element=webDriver.findElement(By.cssSelector("#kw"));
        element.sendKeys("软件测试");
        webDriver.findElement(By.cssSelector("#su")).submit();
    }

但是当使用submit点击超链接的按钮时: 比如新闻时

    private static void test06() {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).submit();
    }

结果会出现报错!!!

这是因为submit不支持超链接。

submit和click的区别 

可以使用submit的地方都可以使用click,但是使用click的地方不一定可以使用submit。因为click支持文本框,超链接等等,而submit则不支持超链接。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM之类加载与字节码(二)

3. 编译期处理 什么是语法糖 所谓的 语法糖 ,其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成 和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利(给…

看跨境电商世界区域分布,Live Market教你深入参与跨境创业

随着全球化发展带来互联网技术的进步和平台经济的触角伸向全球,跨境电商越来越成为全球贸易的重要组成部分。根据国际数据公司(IDC)的最新数据显示,全球前五大跨境电商平台分别是亚马逊、阿里巴巴、eBay、Wish和京东全球购。这五家…

【Linux】内核线程创建 kthread_run 函数和内核中断

kthread_run函数详解 以PCIE的热插拔内核线程创建为例说明 注意:内核线程和RTOS的线程略有不同,这里Linux上创建以后直接运行,RTOS上有的是需要加入到调度队列中后才会执行,比如RT-Thread的系统 kthread_run 是 Linux 内核中的…

人类与机器的分类不同

分类能力也是智能的重要标识之一。通过分类,我们可以将事物或概念进行归类和组织,从而更好地理解和处理信息。分类在人类认知和智能发展中起到了重要的作用,它有助于我们对世界进行认知、记忆、推理和决策。在机器智能领域,分类同…

企业服务器器中了360后缀勒索病毒怎么解决,勒索病毒解密数据恢复

随着网络威胁的增加,企业服务器成为黑客攻击的目标之一。近期,上海某知名律师事务所的数据库遭到了360后缀的勒索病毒攻击,导致企业服务器内的数据库被360后缀勒索病毒加密。许多重要的数据被锁定无法正常读取,严重影响了企业的正…

基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220(2)----驱动STSPIN220

基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220----2.驱动STSPIN220 套件概述样品申请STSPIN220描述STSPIN220所有功能基础配置REF电流配置细分配置IO配置定时器配置初始化mode 套件概述 本文档的目标是提供关于使用STM32CubeMX驱动低压步进电机驱动器STSPIN220的详尽信息…

vue2中使用mock数据发送请求

1.安装 npm i mockjs1.1 2.准备json数据 说明:mock数据需要的图片放置到public文件夹中(原封不动的打包到dist文件夹) [{"id": "1","imgUrl": "/images/banner1.jpg"},{"id": "2&qu…

每天一道leetcode: 57.和为s的两个数字

今日份题目: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例1 输入:nums [2,7,11,15], target 9 输出:[2,7] 或者 …

一文带你快速了解【在树莓派上搭建web网站---并在外网可访问】

文章目录 概述使用 Raspberry Pi Imager 安装 Raspberry Pi OS测试 web 站点安装静态样例站点 将web站点发布到公网安装 Cpolarcpolar进行token认证生成cpolar随机域名网址生成cpolar二级子域名将参数保存到cpolar配置文件中测试修改后配置文件配置cpolar服务开机自启动 概述 …

Gson 添加数据默认值问题记录

问题:在用Gson add(key(string类型),value(必须是JsonElement子类))时发现,value 传了 "" 空字符串(非null),默认解析后返回null&#…

机器学习笔记 - 关于GPT-4的一些问题清单

一、简述 据报道,GPT-4 的系统由八个模型组成,每个模型都有 2200 亿个参数。GPT-4 的参数总数估计约为 1.76 万亿个。 近年来,得益于 GPT-4 等高级语言模型的发展,自然语言处理(NLP) 取得了长足的进步。凭借其前所未有的规模和能力,GPT-4为语言 AI​​设立了新标准,并为机…

11. 使用tomcat中碰到的一些问题

文章目录 问题一:Tomcat的startup.bat启动后出现乱码问题二:一闪而退之端口占用问题三:非端口问题的一闪而退问题四:服务器的乱码和跨域问题问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失问题六:Tom…

18 | 基于DDD的微服务设计实例

为了更好地理解 DDD 的设计流程,这篇文章会用一个项目来带你了解 DDD 的战略设计和战术设计,走一遍从领域建模到微服务设计的全过程,一起掌握 DDD 的主要设计流程和关键点。 项目基本信息 项目的目标是实现在线请假和考勤管理。功能描述如下…

适配器模式(C++)

定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象 ”放在新的环境中应用,但是新环境要求…

Codeforces Round 890 (Div. 2) D. More Wrong(交互题 贪心/启发式 补写法)

题目 t(t<100)组样例&#xff0c;长为n(n<2000)的序列 交互题&#xff0c;每次你可以询问一个区间[l,r]的逆序对数&#xff0c;代价是 要在的代价内问出最大元素的位置&#xff0c;输出其位置 思路来源 neal Codeforces Round 890 (Div. 2) supported by Constructo…

python:isdigit()、isalpha()、isalnum() 三个函数的区别和注意点

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 一、isdigit() python关于 isdigit() 内置函数的官方定义&#xff1a; S.isdigit() -> bool Return True if all characters in S are digitsand there is at least one character in S, False otherwise.翻…

文心一言 VS 讯飞星火 VS chatgpt (72)-- 算法导论7.1 3题

三、请简要地证明:在规模为 n 的子数组上&#xff0c;PARTITION 的时间复杂度为 Θ(n)。 文心一言&#xff1a; 首先&#xff0c;我们需要明确PARTITION函数的具体定义。PARTITION函数通常用于快速排序算法中&#xff0c;它将一个数组分为两个子数组&#xff0c;使得一个子数…

【TypeScript】交叉类型联合类型(四)

【TypeScript】交叉类型&联合类型&#xff08;四&#xff09; 【TypeScript】交叉类型&联合类型&#xff08;四&#xff09;一、简介二、交叉类型2.1 交叉类型使用的注意点2.2 基本数据类型交叉2.3 对象类型交叉 三、联合类型四、类型缩减 一、简介 TypeScript 中的交…

【二】SPI IP核的使用

【一】SPI IP核使用&#xff1a;传送门 基于qsys通过spi外部总线协议对sd卡进行读写操作 一、实验平台与实验的目的&#xff1a; ​ 正点原子开拓者、芯片型号&#xff1a;EP4CE10F17C8&#xff1b;还需要一张sd卡。 ​ 该实验主要是利用SPI IP核驱动SD卡来实现读写实验&am…

主成分分析学习笔记

概述 主成分分析&#xff08;Principal Component Analysis&#xff09;是一种常见的数据分析方式&#xff0c;常用于高维数据的降维&#xff0c;提取数据的主要特征分量&#xff0c;其数学推导可以从最大可分性和最近重构性两个角度着手&#xff0c;前者的优化条件为划分后方…