当前位置: 首页 > news >正文

测试八股文-Selenium

测试八股文-Selenium

总结了一些selenium的常见问题,欢迎评论区补充,如需教学辅导可私信作者
什么是Selenium

Selenium是一个自动化测试框架,用于模拟用户在Web应用程序中的交互行为。它支持多种语言,包括Java、Python、Ruby等

Selenium有哪些组件?

Selenium由三个组件组成:Selenium IDESelenium WebDriverSelenium Grid

  • Selenium IDE是一个浏览器插件,用于录制和回放用于在Web应用程序中的交互行为
  • Selenium WebDriver是一个用于编写自动化测试脚本的API,它支持多种编程语言
  • Selenium Grid是一个分布式的测试工具,用于在多台计算机上并行运行测试
什么是WebDriver?

WebDriver是Selenium的一个API,用于编写自动化测试脚本。它提供了一组方法,用于模拟用户在Web应用程序中的交互行为,如点击链接,填写表单,提交表单等。

WebDriver有哪些常用的方法?
  • get:打开指定url
  • find_element:查找页面上的元素
  • send_keys:向页面上的元素发送输入
  • click:点击页面上的元素
  • submit:提交表单
  • get_attribute:获取元素的属性值
  • text:获取元素的文本内容
如何处理弹出窗口?
  • 浏览器的弹窗有三种:Alert(仅有确认按钮)、Confirm(确认或取消)、Prompt(带有输入框),我们无法通过元素定位来操作

    driver.switch_to.alert.accept() //确认,三种弹窗都可以
    driver.switch_to.alert.dismiss() //取消、不同意 confirm和prompt可以使用
    dirver.switch_to.alert.text //打印弹窗信息
    driver.switch_to.alert.send_keys(text) //向弹窗中输入内容
    
如何模拟鼠标和键盘操作?
  • 操作键盘可以使用selenium.webdriver.common.keys

  • 操作鼠标可以使用selenium.webdriver.common.action_chain

    move_to_element():将鼠标移动至指定的element对象
    click():执行单击操作
    click_and_hold():单击不释放
    release():释放单击
    double_click():双击操作
    context_click() :右键单击
    perform():立即执行操作
    
如何处理下拉框?

使用selenium.webdriver.support.select下的Select类,可以通过以下三种方式对元素进行选择

  • 通过索引:Select(el).select_by_index(1)
  • 通过value属性值:Select(select_element).select_by_value("1990")
  • 通过显示文本进行选择:Select(el).select_by_visible_text("2020")
如何在多个窗口间进行切换?
  • 先获取所有的创建,调用driver.window_handles会返回一个窗口数组
  • 如果需要获取当前窗口可以调用chrome.current_window_handle
  • 如果需要切换窗口可以调用driver.switch_to_window(windows[index]),浏览器每打开一个窗口会在列表尾部添加一个窗口对象,index=-1时则会切换到新打开的窗口
如何进入和退出iFrame

进入

1.使用iframe的name属性进行切换drvier.switch_to.frame("attr_name")

2.先找到该iframe,然后再切换driver.switch_to.frmae(driver.find_element_by_name("attr_name"))

3.使用索引找到该iframedriver.switch_to.frame(4)

退出

1.如果需要切换到最外层则使用:driver.switch_to.default_content()

2.切换到上一层的iframe

driver.switch_to.parent_frame()
Selenium中的八大选择器
查找方式方法名称
根据ID属性find_element_by_id
根据name属性find_element_by_name
根据超链接的文字信息find_element_by_link_text
根据超链接的部分文字信息find_element_by_partial_link_text
根据tag名称find_element_by_tag_name
根据class名称find_element_by_class_name
根据xpath表达式find_element_by_xpath
根据css选择器find_element_by_css_selector
Selenium如何执行JS脚本

selenium中提供了操作js脚本的方法

driver.execute_script(script,args)
Selenium如何截取屏幕

driver.get_screenshot_as_file(path)

Selenium三种等待
  • 隐式等待:就是在创建driver时,为浏览器对象创建一个等待时间,这个方法得不到某个元素就等待一段时间,直到拿到某个元素位置,在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部不断的刷新页面去寻找我们需要的元素,只写一次,全局有效,针对于页面加载

    driver.implicitly_wait()
    
  • 显示等待:明确的要等到某个元素的出现,等不到就一直等,除非在规定的时间之内都没找到

    需要使用selenium.webdriver.support.expected_conditionsselenium.webdriver.support.wait.WebDriverWait

    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait # 显示等待
    # 在当前浏览器,最长等待20s, 每间隔1s确认一次,直到,传入的元素定位是可见的
    username_loc = (By.NAME, "username")
    #构建WebDriverWait对象,调用until方法
    WebDriverWait(driver,20,1).until(EC.visibility_of_element_located(username_loc)
    
  • 强制等待:

    python

    time.sleep(timer)
    

    Java

    Thread.sleep(time)
    TimeUnit.时间单位.sleep(time)
    
元素定位不到可能是为什么?
  • UI被改动
  • 网络卡顿
  • 元素被嵌套再iframe
  • 元素被嵌到shadow-root
  • 页面元素是动态的(每次刷新后元素属性会发生变化)
  • 由于元素被遮挡,需要通过js点击
  • 定位表达式有误

相关文章:

测试八股文-Selenium

测试八股文-Selenium 总结了一些selenium的常见问题,欢迎评论区补充,如需教学辅导可私信作者 什么是Selenium? Selenium是一个自动化测试框架,用于模拟用户在Web应用程序中的交互行为。它支持多种语言,包括Java、Py…...

数据库第8章作业

ps:本篇只为记录和分享 一. 单选题(共20题) 1. (单选题)E-R图是数据库设计的工具之一,它适用于建立数据库的( )。 A. 概念模型B. 物理模型C. 逻辑模型D. 结构模型 我的答案: A :概念模型; 2. (单选题)数…...

【OpenCV实现平滑图像金字塔,轮廓:入门】

文章目录 概要图像金字塔轮廓:入门 概要 文章内容的概要: 平滑图像金字塔: 图像金字塔是什么? 图像金字塔是指将原始图像按照不同的分辨率进行多次缩小(下采样)得到的一系列图像。这种处理方式常用于图像…...

Java JVM垃圾回收确定垃圾的两种方式,GC Root

文章目录 前言一、如何确定是垃圾?引用计数法根可达路径法 二、GC Root1、以下可作为GC Root对象2、判断可回收:GC Root不可达3、真正宣告对象死亡需经过两次标记过程(重要) 前言 对于Java两种确定对象为可回收的两种方式&#x…...

java集合之List接口实现类常用方法详解

目录 一、List集合概述 二、ArrayList类 三、ArrayList常用方法实例 四、LinkedList类 五、Linkedist常用方法实例 一、List集合概述 java.util.List接口继承自Collection接口,是单列集合的一个分支,通常将实现了List接口的对象称为List集合&#x…...

三分钟带你了解JS、原型、原型链

1.什么是JS? JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象; 它是基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式; 白话一点说就是…...

C# 基于腾讯云人脸核身和百度云证件识别技术相结合的 API 实现

目录 腾讯云人脸核身技术 Craneoffice.net 采用的识别方式 1、活体人脸核身(权威库): 2、活体人脸比对: 3、照片人脸核身(权威库): 调用成本 百度云身份证识别 调用成本 相关结合点 核心代码 实现调用人脸核身API的示例 实现调用身…...

LeetCode每日一题——275. H-Index II

文章目录 一、题目二、题解 一、题目 Given an array of integers citations where citations[i] is the number of citations a researcher received for their ith paper and citations is sorted in ascending order, return the researcher’s h-index. According to the…...

项目添加EZOpenSDK之后就开始报错:could not build module foundation等

最近修改一个老项目,出现了一个报错问题。困扰了很久。现在终于找到解决方法了。分享一下。 正常的项目,使用pod引入EZOpenSDK之后就开始报错了,下面就是错误信息: could not build module foundation错误 could not build modul…...

“智能科技·链接未来”2024中国国际人工智能产品展览会·智博会

2024年中国国际人工智能产品展览会(简称世亚智博会)将于3月份在上海举办,6月份在北京举办。本届展会以“智能科技链接未来”为主题,将集中展示全球前沿的人工智能技术和应用,以及人工智能在各个领域的新成果。 本届展会…...

华为NAT配置实例(含dhcp、ospf配置)

一、网络拓朴如下: 二、要求:PC1 能访问到Server1 三、思路: R2配置DHCP,R2和R1配OSPF,R1出NAT 四、主要配置: R2的DHCP和OSPF: ip pool 1gateway-list 10.1.1.1 network 10.1.1.0 mask 25…...

怎样才能把视频号的视频保存到相册,怎么下载视频号视频两个方法轻松解决

在微信客户端想要下载视频号视频却不知道怎么保存到本地相册?让不少网友犯了难,不用在纠结怎么样才可以将视频号视频下载下来,今天就分享两个小程序将视频号视频提取出来,另外在告诉大家一个下载技巧,一定要看到到结尾…...

软考系统架构师知识点集锦七:计算机系统基础知识

一、考情分析 二、考点精讲 2.1计算机系统概述 2.1.1计算机系统组成 2.1.2 存储系统 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型原因是由于程序中存在着大量的循环操作。 空间局部性:指一旦程序访问了某个存储单元,不久…...

k8s节点已有镜像,但Pod一直在拉取镜像时卡着

Pod状态为ContainerCreating,查看日志提示pull镜像,但该镜像在Node节点已经存在,且拉取策略为IfNotPresent 解决:重启kubelet...

用图说话——流程图进阶

目录 一、基本流程图 二、时序流程图 一、基本流程图 经常阅读歪果仁绘制的流程图,感觉比较规范,自己在工作中也尝试用他们思维来绘图,这是一个小栗子: 二、时序流程图 在进行Detail设计过程中,一般的绘图软件显得…...

深入了解 Elasticsearch 8.1 中的 Script 使用

一、什么是 Elasticsearch Script? Elasticsearch 中的 Script 是一种灵活的方式,允许用户在查询、聚合和更新文档时执行自定义的脚本。这些脚本可以用来动态计算字段值、修改查询行为、执行复杂的条件逻辑等等。 二、支持的脚本语言有哪些 支持多种脚本…...

激光雷达点云基础-点云滤波算法与NDT匹配算法

激光雷达点云处理在五年前就做了较多的工作,最近有一些新的接触发现激光雷达代码原理五年前未见重大更新,或许C与激光雷达结合本身就是比较高的技术门槛。深度学习调包侠在硬核激光雷达技术面前可以说是完全的自愧不如啊。 1、点云滤波 在获取点云数据…...

回收废品抢派单小程序开源版开发

回收废品派单抢派单小程序开源版开发 在这个废品回收抢单派单小程序开源版开发中,我们将构建一个专业且富有趣味性的平台,以深度的模式来重塑废品回收体验。 我们将提供一个会员注册功能,用户可以通过小程序授权注册和手机号注册两种方式快…...

粤嵌实训医疗项目--day04(Vue + SpringBoot)

往期回顾 粤嵌实训医疗项目--day03(Vue SpringBoot)-CSDN博客粤嵌实训医疗项目day02(Vue SpringBoot)-CSDN博客粤嵌实训医疗项目--day01(VueSpringBoot)-CSDN博客 目录 一、用户详细信息查询 (查询信息与…...

redis加入window服务及删除

1、命令redis-server.exe --service-install redis.windows.conf,在服务中可配置自动启动 删除redis服务,先停止redis服务运行,管理员cmd模式,sc delete "redis" ,...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...