自动化测试经典面试题-定位不到元素

news2024/11/20 12:26:17

在这里插入图片描述


元素定位常见的面试相关问题

  • 一、元素定位
    • 1、Selenium/Appium定位方法有几种?分别是?
    • 2、如何通过子元素定位父元素
  • 二、元素定位不到
    • 1、定位不到元素是什么原因导致的?
    • 2、如何定位动态元素
    • 3、有的元素就加载页面上,但是你却定位不到,怎么解决
  • 三、元素操作
    • 1、一个元素明明定位到了,点击无效(也没报错),如何解决?
    • 2、selenium 中隐藏元素如何定位,操作?
    • 3、如果产品总是出现弹窗,导致用例无法执行,应该如何解决?(未完)
    • 4、如何获取app中的toast消息提示?
  • 四、元素是否在页面存在
    • 1、如何判断一个页面上元素是否存在?

一、元素定位

1、Selenium/Appium定位方法有几种?分别是?

selenium:

xpath、css、id、name、class_name、tag_name、link_text、partail_link_text

Appium:

xpath、css、id(通过身份标识 id 查找元素,对应的是resource-id)、accessibility_id(通过 accessibility_id查找元素,对应的是content-desc)

2、如何通过子元素定位父元素

获取当前节点的父节点://input[@name="wd"]/..
获取当前节点的爷爷节点://input[@name="wd"]/../..

二、元素定位不到

1、定位不到元素是什么原因导致的?

原因:元素定位表达式写错了(可能是单词、格式写错了)
解决方案:检查单词、元素定位表达式。

原因:元素定位写错了,报NoSushElementException(在elements中搜索对应的元素,发现没有搜索到,则证明定位写错了)
解决方案:检查写一个正确的定位

原因:由于页面加载很快,元素还未加载出来就执行了find_element操作
debug思路:1、添加一个强制等待,确认页面加载完成之后,再执行find操作,如果此时用例通过,代表元素定位没有问题。否则是别的原因。
解决方法:使用隐式等待和显性等待

原因:因为id是动态的,一直是变化的,所以此时使用ID定位就会非常不稳定
解决方案:检查每次使用的这个元素的id是否一致;使用其他的定位方式,xpath或者css的相对定位

原因:排除以上情况后,还有可能性为iframe
debug思路:1、查看浏览器的elements页面中输入iframe,确认页面中是否含有iframe,
2、然后鼠标悬浮到iframe元素上,检查要定位元素是否在iframe页面中,如果是的话,那么定位之前需要切换iframe的操作。driver.switch_to.frame()

原因:打开了新窗口,并且定位的是新窗口的元素
debug思路:检查是否打开了新的页面
解决方案:如果要定位新窗口的元素,那么需要先切换到对应的页面再去定位
windows=driver.window_handles
driver.switch_to.window(windows[-1])

2、如何定位动态元素

检查每次使用的这个元素的id是否一致,确定是否是否是动态元素;
如果是动态元素,使用其他的定位方式,xpath或者css的相对定位

3、有的元素就加载页面上,但是你却定位不到,怎么解决

同1

三、元素操作

1、一个元素明明定位到了,点击无效(也没报错),如何解决?

原因:异步加载js导致点击事件无效
解决方案:自己封装一个显性等待,循环点击该按钮,直到生效为止<显性等待>

2、selenium 中隐藏元素如何定位,操作?

原因:隐藏元素可以直接定位,但是无法直接点击或者交互
解决方案:使用js执行交互操作

driver.excute_script("document.querySelector(‘#kw’).value=‘python’ "):修改文本框文本信息
driver.excute_script(“document.querySelector(‘#kw’).value”):获取文本框文本信息
driver.excute_script(“document.querySelector(‘#su’).click()”):点击操作
driver.excute_script(“document.querySelector(‘#train_date’).value”):获取时间控件的信息,并返回出来

3、如果产品总是出现弹窗,导致用例无法执行,应该如何解决?(未完)

在做app自动化测试过程中不定时弹框(广告弹窗,升级提示框,新消息提示框等等)
弹框不是 BUG(UI 界面提示,警告的作用)
在这里插入图片描述
解决方法:通过添加黑名单,解决异常处理;采用装饰器
对原有函数的功能增强
不改变原有函数的逻辑
使代码更简洁、易维护
详细文章介绍:https://blog.csdn.net/YZL40514131/article/details/130543238?spm=1001.2014.3001.5501

4、如何获取app中的toast消息提示?

原因:toast闪过太快,不好定位
解决方案:直接通过xpath定位结合隐式等待获取《特殊控件toast识别》
appium使用uiautomator底层的机制来分析抓取toast,并且把toast放到控件树里面,但本身并不属于控件。

方式一:
self.driver.find_element(AppiumBy.XPATH,"//*[contains(@text,'popup menu')]")
方式二:
self.driver.find_element(AppiumBy.XPATH,"//android.widget.Toast[@class='android.widget.Toast']")

四、元素是否在页面存在

1、如何判断一个页面上元素是否存在?

解决方案:通过查看当前页面dom,搜索该元素是否存在。如果是脚本自动化运行过程中,应该通过打印page_source,即可了解到该元素在运行过程中是否存在

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

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

相关文章

Rust 笔记:有限状态机原理/状态模式 及其 在Rust 编程中的应用

Rust 笔记、设计模式 有限状态机原理及其在Rust 编程中的应用 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.ne…

chatgpt赋能python:Python中拷贝的介绍

Python 中拷贝的介绍 在 Python 中&#xff0c;拷贝是一个十分常见而且必要的操作。拷贝可以在许多情况下被使用&#xff0c;例如在创建测试数据、编写一个新的算法时&#xff0c;或者是在处理多维数据结构的程序中。由于 Python 中的对象是动态类型的&#xff0c;因此在拷贝时…

IDEA 安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;它具有许多优势&#xff0c;适用于各种开发过程。本文将介绍 IDEA 的主要优势&#xff0c;并提供详细的安装配置步骤。 介绍 IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;之所以被广泛使用&#xff0c;…

Linux系统下imx6ull QT编程—— C++基础(一)

Linux QT编程 文章目录 Linux QT编程前言一、 C的输入输出方式1.cout语法形式2.cin语法形式3.C之命名空间 namespace 前言 学习 C的面向对象编程&#xff0c;对学习 Qt 有很大的帮助 一、 C的输入输出方式 效率上&#xff0c;肯定是 C 语言的 scanf 和 printf 的效率高&#…

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-GRU麻雀算法优…

代码随想录算法训练营第五十七天 | 回文

647. 回文子串 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;字符串性质决定了DP数组的定义 | LeetCode&#xff1a;647.回文子串_哔哩哔哩_bilibili 状态&#xff1a;不会做。 思路 确定dp数组&#xff08;dp table&#xf…

黑马Redis视频教程实战篇(一)

目录 一、短信登录 1.1、导入黑马点评项目 &#xff08;1&#xff09;导入黑马点评sql脚本 &#xff08;2&#xff09;导入后端项目 &#xff08;3&#xff09;导入前端项目 1.2、基于Session实现登录流程 1.3 、实现发送短信验证码功能 1.4 、实现登录拦截功能 1.5 、隐…

C语言——每日一题

1.倒置字符串 倒置字符串 要将每一个单词逆序输出&#xff0c;首先可以将整个字符串内容都逆序输出&#xff0c;然后再将字符串中的每一个单词再进行逆序。 例如&#xff1a;逆序 i like beijing. 先逆序成&#xff1a;.gnijieb ekil i 再将每个单词逆序&#xff1a; beij…

chatgpt赋能python:Python中字符串的转换方法

Python中字符串的转换方法 作为一门非常强大的编程语言&#xff0c;Python在字符串的处理上也有着非常丰富的功能。在Python中&#xff0c;字符串是非常重要的数据类型之一&#xff0c;也是最常用的数据类型之一。字符串在Python中有着很多的用途&#xff0c;比如表示文本数据…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(3)----获取ID

概述 一旦传感器被正确初始化&#xff0c;可以通过SPI或I2C接口向传感器发送读取命令&#xff0c;并接收传感器返回的数据。这个读取过程包括获取LSM6DS3TR传感器提供的加速度计和陀螺仪数据&#xff0c;以及传感器对应的温度信息。 获取数据状态 STATUS_REG (1Eh)是该传感器…

破解mysql用户的密码

假如mysql数据库中有一个 prod_blb 用户&#xff0c;你作为root管理员&#xff0c;想知道它的密码&#xff0c;又不想修改它的密码。这个时候就只能通过获取到 prod_blb 用户加密的密码进程破译 1、MYSQL加密方式 MYSQL数据库的认证密码有两种方式&#xff0c;MYSQL 4.1版本之…

python笔记16_实例练习_二手车折旧分析p1

python数据分析练习&#xff0c;具体数据不放出。 分析实践很简单。目的不是做完&#xff0c;而是讲清楚每一步的目的和连带的知识点&#xff08;所以才叫学习笔记&#xff09; 0.数据准备 原始数据格式&#xff1a;csv文件 原始数据结构&#xff1a; 数据格式 字段名 int…

使用Python处理PDF文件的简介与实践

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

ol中不同区域加载不同底图

概述 写一篇水文&#xff0c;讲讲如果在openlayers中实现不同的区域加载不同的底图。 效果 实现 通过tileUrlFunction实现不同切片地址的请求。 <!DOCTYPE html> <html><head><title>XYZ</title><link rel"stylesheet" href&qu…

从源码学习Transformer

Transformer总体结构 近几年NLP领域有了突飞猛进的发展&#xff0c;预训练模型功不可没。当前利用预训练模型&#xff08;pretrain models&#xff09;在下游任务中进行fine-tune&#xff0c;已经成为了大部分NLP任务的固定范式。Transformer摒弃了RNN的序列结构&#xff0c;完…

chatgpt赋能python:Python中捕获异常

Python中捕获异常 什么是异常&#xff1f; 在Python编程中&#xff0c;异常&#xff08;Exceptions&#xff09;是程序执行时发生的错误或意外情况。这些异常可能导致程序崩溃或不能正常运行。为了避免这种情况的发生&#xff0c;我们需要捕获异常并在程序执行时进行相应的错…

SAP-MM-发票校验基本功能详解

一、MIRO抬头数据 1、基本数据 发票日期&#xff1a;一般是指凭证日期&#xff0c;对应FI中的凭证日期&#xff1b; 过账日期&#xff1a;发票和FI凭证的过账日期&#xff1b;这两个日期都可以作为付款条件的计算日期&#xff1b; 金额、税额&#xff1a;这个是指实际发票的…

【探索】机器指令翻译成 JavaScript

前言 前些时候研究脚本混淆时&#xff0c;打算先学一些「程序流程」相关的概念。为了不因太枯燥而放弃&#xff0c;决定想一个有趣的案例&#xff0c;可以边探索边学。 于是想了一个话题&#xff1a;尝试将机器指令 1:1 翻译 成 JavaScript&#xff0c;这样就能在浏览器中&am…

chatgpt赋能python:Python中按下某个按键的实现方法

Python中按下某个按键的实现方法 Python是一种广泛应用于各种领域的高级编程语言&#xff0c;可以用于编写各种类型的应用程序和工具。其中&#xff0c;它在游戏开发方面有着广泛的应用。而在游戏开发过程中&#xff0c;按键响应是至关重要的一个组成部分。本文将带领读者了解…

【测试基础01】

本期参考文献: 链接 一、安装mysql 1、安装mysql可以参考链接: 文章 2、安装mysql与python的工具 进行校验&#xff0c;查看是否安装成功 二、创建库 mycursor mydb.cursor() mycursor.execute("CREATE DATABASE ck") 执行语句创建库在mysql库里可以看到…