UI自动化定位元素之js操作

前言

在UI自动化测试中,元素定位是一个至关重要的步骤。准确地定位到页面上的元素,是实现自动化测试的前提和保障。本文将介绍使用JavaScript进行元素定位的常见方法,并分析页面的组成,帮助读者更好地理解和应用元素定位技术。

页面组成 在进行元素定位之前,我们需要了解页面的基本组成。一个网页通常由HTML、CSS和JavaScript三部分组成。HTML负责页面的结构,CSS负责页面的样式,而JavaScript则负责页面的交互。在UI自动化测试中,我们主要关注的是HTML元素,因为这些元素是用户可以交互的对象。

使用JavaScript进行元素定位的常见方法:

// 1.getElementById:通过元素的ID来定位元素。

var element = document.getElementById("myElementId");

// 2.getElementsByClassName:通过元素的类名来定位元素。返回的是一个HTMLCollection,包含了所有匹配的元素。

var elements = document.getElementsByClassName("myClassName");

// 3.getElementsByTagName:通过元素的标签名来定位元素。返回的是一个HTMLCollection,包含了所有匹配的元素。

var elements = document.getElementsByTagName("div");

// 4.querySelector:通过CSS选择器来定位元素。返回的是匹配到的第一个元素。

var element = document.querySelector(".myClassName");

// 5.querySelectorAll:通过CSS选择器来定位元素。返回的是一个NodeList,包含了所有匹配的元素。

var elements = document.querySelectorAll(".myClassName");

// 6.getAttribute:通过元素的特定属性来定位元素。比如,可以通过href属性来定位链接元素。

var element = document.querySelector("[href='http://example.com']");

// 7.getElementsByName:通过元素的name属性来定位元素。返回的是一个NodeList,包含了所有匹配的元素。

var elements = document.getElementsByName("myInputName");

// 8.Xpath:通过XPath表达式来定位元素。XPath是一种在XML文档中查找信息的语言,也适用于HTML。
 

var element = document.evaluate("//div[@id='myElementId']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);

// 9.CSS选择器:通过CSS选择器来定位元素,与querySelector和querySelectorAll配合使用。例如,.className选择类名为"className"的所有元素,#id选择ID为"id"的元素等。


// 10.链接文本:通过链接文本来定位元素,这在web页面的测试中很有用。比如,你想找到包含特定文本的链接。

var element = document.querySelector("a:contains('My Link Text')");

// 部分链接文本:与上面的方法类似,但是它查找包含部分指定文本的链接。

var element = document.querySelector("a:contains-part('My Link Text')");

js操作
// 设置元素不可见

element = document.getElementsByClassName('el-input__inner')[0];
element.style.display = 'none'; 


// 给文本框赋值

var textbox = document.getElementsByClassName('el-input__inner')[0];
textbox.value = "这是一个文本框哎!";


//设置背景色

var inputColor = document.getElementsByClassName('el-input__inner')[0];
inputColor.style.backgroundColor = 'red';


//设置字体颜色
 

var inputColor = document.getElementsByClassName('el-input__inner')[0];
inputColor.style.color = 'red';


// 设置不可点击状态

document.getElementsByClassName('el-input__inner')[0].disabled = true;

// js滑动条:在JavaScript中,你可以使用window.scrollTo()函数来控制滚动条的位置。这个函数接受两个参数,一个是x坐标(水平位置),一个是y坐标(垂直位置)
    //滚动条滚动到页面的顶部
   

 window.scrollTo(0, 0);


    //滚动条滚动到页面的底部、(拖动一半位置)
   

window.scrollTo(0, document.body.scrollHeight);
   
window.scrollTo(0, document.body.scrollHeight/2);


    //页面中任意位置进行滚动,你可以使用element.scrollIntoView()方法。这个方法接受一个参数,表示滚动到的位置。例如,如果你想让一个元素(例如id为"myElement"的元素)滚动到视口中,你可以使用以下代码:
   

document.getElementById("myElement").scrollIntoView();


    //元素内部进行滚动,你可以使用element.scrollTop和element.scrollLeft属性。例如,如果你想让一个元素(例如id为"myElement"的元素)向上滚动100px,你可以使用以下代码:
   

 var element = document.getElementById("myElement");
    element.scrollTop += 100;

以上方法可以帮助我们在JavaScript中定位到页面上的元素。需要注意的是,在实际应用中,可能需要结合多种方法进行定位,以确保准确性和稳定性。

总结: 本文介绍了使用JavaScript进行UI自动化测试元素定位的常见方法,包括通过id、name、class和标签名进行定位。了解这些方法并熟练掌握它们的使用,将有助于我们在UI自动化测试中更加高效地进行元素定位,提高测试效率和准确性。

    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle RAC 集群的安装(保姆级教程)

文章目录 一、安装前的规划1、系统规划2、网络规划3、存储规划 二、主机配置1、Linux主机安装(rac01&rac02)2、配置yum源并安装依赖包(rac01&rac02)3、网络配置(rac01&rac02)4、存储配置&#…

深度强化学习(王树森)笔记01

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

网安渗透攻击作业(1)

实现负载均衡 第一步:安装依赖 sudo apt insta11 libgd-dev 第二步:下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 第三步:对nginx进行解压 tar -zvxf nginx-1.22.1.tar.g2 第四步:编译安装nginx cd ngi…

短剧小程序分销系统开发:创新与机遇的融合

一、引言 随着移动互联网的快速发展,短剧作为一种新兴的娱乐形式,正逐渐成为人们生活中的一部分。短剧小程序分销系统的开发,不仅为短剧的传播提供了新的渠道,同时也为相关产业带来了新的商业机会。本文将探讨短剧小程序分销系统…

【JavaEE】网络原理: 网络编程套接字(概念)

目录 1.什么是网络编程 2.网络编程中的基本概念 2.1发送端和接收端 2.2请求和响应 2.3客户端和服务端 3.Socket套接字 4.Socket编程注意事项 1.什么是网络编程 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信 (…

PVE更换LXC源教程,如何在PVE上使用LXC容器

PVE更换LXC源教程,如何在PVE上使用LXC容器 Proxmox Virtual Environment (PVE) 是一种基于开源的虚拟化平台,它允许您轻松地在单个物理服务器上管理和部署虚拟机和容器。其中的LXC容器是一种轻量级容器化技术,可提供更高的性能和资源利用率。…

python连接sqlserver

1、安装sqlserver 用的是sqlserver2012的版本 网上很多,参考下 https://blog.csdn.net/weixin_44889709/article/details/123769722 2、安装python3.7及以下环境 尝试安装python3.8的环境不能连接成功 conda create -n pytorch python3.73、安装sqlserver的pyt…

Dijkstra算法-lanqiao1122

#include <bits/stdc.h> using namespace std; const long long INF 0x3f3f3f3f3f3f3f3fLL; const int N 3e5 5; struct edge{int from, to;//边&#xff1a;起点&#xff0c;终点&#xff0c;权值&#xff1b;起点from没有用到&#xff0c;e[i]的i就是fromlong long …

JUC-synchronized无锁、偏向锁、轻量级锁、重量级锁

1 synchronized实操 关键字synchronized可以用来保证多线程并发安全的**原子性、可见、有序性。**关键字synchronized不仅可以作用于方法还可以作用于同步代码块&#xff0c;能够保证作用范围中线程访问安全。 注意&#xff1a;局部变量是线程安全的。线程不安全问题只存在于实…

excel中多行合并后调整行高并打印

首先参考该文&#xff0c;调整全文的行高。 几个小技巧&#xff1a; 1.转换成pdf查看文件格式 2.通过视图--》分页预览&#xff0c;来确定每页的内容&#xff08;此时页码会以水印的形式显示&#xff09; 3. 页面布局中的&#xff0c;宽度可以选为自动&#xff0c;因为已经是…

ASP.NET 7 Core Web 读取appsetting.json

把一些配置信息保存在json文件可以避免更改时要重新发布程序的烦恼。 我这里使用的是写一个类文件&#xff0c;然后通过program.cs启动的方式&#xff08;.net 6 开始没有startup了&#xff09;。 项目类型&#xff1a;ASP.NET Core Web MVC / .NET 7.0 / VS2022 第一步…

苹果提审被拒反馈崩溃日志.text | iOS 审核被拒crashLog

iOS审核人员拒绝后每个截图&#xff0c;只给了几个text文件&#xff0c;这种情况就是审核的时候运行你的代码&#xff0c;崩溃了。 仅仅看text文件&#xff0c;是看不出所以然来的&#xff0c;所以我们要将日志转换成.crash格式 1.将.text文件下载下来&#xff0c;将 .text手动…

OpenHarmony关系型数据库

1 概述 关系型数据库(Relational Database, 以下简称RDB)是一种基于关系模型来管理数据的数据库&#xff0c;是在SQLite基础上提供一套完整的对本地数据库进行管理的机制&#xff0c;为开发者提供无需编写原生SQL语句即可实现数据增、删、改、查等接口&#xff0c;同时开发者也…

算法笔记:地理探测器

1 空间分层异质性&#xff08;spatial stratified heterogeneity&#xff09; 空间分层异质性&#xff08;空间分异性/区异性&#xff09;&#xff1a;层内方差小于层间方差的地理现象例如气 候带、土地利用图、地貌图、生物区系、区际经济差异、城乡差异以及主体功能区等 等[…

张维迎《博弈与社会》笔记(3)导论:一些经济学的基础知识

这篇的主要内容介绍了经济学的基础知识吧。 经济学、社会学、心理学的区别 经济学与社会学的区别与共同点 经济学一般是从个人的行为出发解释社会现象&#xff08;from micro to macro&#xff09;。社会学的传统方法则是从社会的角度来解释个人的行为&#xff08;from macro…

Oracle分栏(非分页)查询

不知道Oracle怎么进行数据分栏(分栏: 因数据列过长, 部分数据作为新列显示). 在这里先记录一下粗浅的查询方法. 数据源例子: select 日用百货 as cat, 手电筒 as name, 20 as amount, 2024-01-27 as dt from dualunion allselect 餐饮美食 as cat, 鸡公煲 as name, 15.9 as amo…

外卖跑腿系统开发:构建高效、安全的服务平台

在当今快节奏的生活中&#xff0c;外卖跑腿系统的开发已成为技术领域的一个重要课题。本文将介绍如何使用一些常见的编程语言和技术框架&#xff0c;构建一个高效、安全的外卖跑腿系统。 1. 技术选择 在开始开发之前&#xff0c;我们需要选择适合的技术栈。常用的技术包括&a…

Java 字符串 10 字符串相关类的底层原理

底层原理1&#xff0c;底层原理2 底层原理3&#xff1a; 分两种情况&#xff1a; 1、等号右边没有变量&#xff1a; 2、等号右边有变量&#xff1a; 两个对象&#xff0c;一个是StringBuilder&#xff0c;一个是String&#xff0c;浪费空间&#xff0c;性能不高 在jdk8之前&am…

设计模式⑩ :用类来实现

文章目录 一、前言二、Command 模式1. 介绍2.应用3. 总结 三、Interpreter 模式1. 介绍2. 应用3. 总结 参考文章 一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系…

go语言(十九)---- channel

channel的使用 //1. 发送value到channelchannel <- value //2. 接收并将其丢弃<- channel //3. 从channel中接收数据&#xff0c;并将其赋值给x x : <- channel 例子 package mainimport "fmt"func main() {//定义一个channelc : make(chan int)go func…