selenium 自动化测试

这篇具有很好参考价值的文章主要介绍了selenium 自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

测试工具

QTP的自动化测试

selenium自动化

selenium基本内容

定位元素方法:

Xpath定位表达式语法

层级关系

常见写法

轴定位表达式

特殊写法:

注意事项:

css定位表达式语法:

层级关系

常见写法 

有什么操作:click、sedkeys、clear

模拟键盘操作

Console确定元素是否可以操作

selenium上传文件

1、如果是input 标签--input元素

2、非input元素--如果不 是input 标签

Robot类完成底层键鼠的控制。

脚本execute_script 

模拟鼠标操作

Selenium判断函数:

自动化测试问答题

其他博主知识收集处

启动浏览器基础代码 

selenium进行对cookie管理

进行识别base64,如图片




 Xpath基础表达式,请参该如下

1.菜鸟教程(基础):XPath 语法 | 菜鸟教程

2.W3school文章(基础):HTML 教程



测试工具

1,自动化功能测试工具:QTP、selenium

2,自动化性能测试功能:LoadRunner、jmeter

3,自动化接口测试工具:Charles、soapUI、LoadRunner、jmeter、fiddler、Wireshark

4,测试管理工具:禅道、qc、jira、testlink

管理需求,管理测试计划、管理测试用例、管理bug、分析bug

QTP的自动化测试

 录制的原理:将被测试的对象,放在对象库中,并且给一个唯一的标识

 回放的原理:将对象库中的对象与实际运行的对象进行对比,如果一致就运行,不一致就报错。

  Selenium的工作原理:获取页面元素,操作页面元素

 Selenium是通过什么方法获取页面上的元素:findelEment  

selenium自动化

selenium基本内容

selenium组件:

    ①Selenium IDE:火狐浏览器,selenium中唯一能够看到界面的东西;

提供了录制、回放功能,可以将录制的步骤,转换成

各种语言,默认录制成为的语言为HTML

             ②Selenium webdriver:jar包,支持:Java、Python、C#,PHP、net、ruby;

                               通过编程语言,来执行项目的自动化

             ③Selenium RC:服务,通过cmd命令来执行

             ④Seleniumgrid:支持分布式测试用例的运行

Selenium2=selenium RC + selenium webdriver

Selenium IDE:录制,回放,可转换语言---- 图形化界面

实现自动获取浏览器驱动,从而解决重复下载浏览器的驱动

WebDriverManager实现自动获取浏览器驱动(Java) - 码农教程

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.4.1</version>
</dependency>
//设置下载驱动路径,设置当前项目下的DriverExe文件夹中
System.setProperty("webdriver.chrome.driver", "DriverExe");
//默认下载最新驱动
WebDriverManager.chromedriver().setup();

定位元素方法:

ID、name、tagname、classname、xpath、linktext、partial link text、css

Xpath定位表达式语法

XPath 语法 | 菜鸟教程:XPath 语法 | 菜鸟教程

层级关系

层级关系的表达:
                子元素                 /
                子孙元素             //
                父元素                 /..
                爷爷                    /../..
                兄弟元素            :

常见写法

1、描述元素拥有attr属性,如:[@attr]  

2、描述 元素的attr属性的值是value,如:[@attr='value']    

3、描述 元素的attr属性的值内容包含value 如:[contains(@attr,'value')]

4、表示否定 如:[not(限制条件)]

5、连接多个条件  and ,or  只不过or没有什么意义。

//input[@value='臭豆腐' or @value='烤生蚝']
//input[@type='checkbox' and @value='烤生蚝']

6、通过文本内容来进行定位

    文本内容确定,如小龙龙:

[string()='小龙龙']  [text()='小龙龙']

    文本内容包括,如小龙龙:

[contains(string(),'小龙龙')]
[contains(text(),'小龙龙')]

string()和text()的区别:
            string()获取到的是一个元素中即使被子元素截断了文本,也会拼接起来的内容。  获取到string()内容更多
            text() 获取到的是一个元素中,到下一个元素之间的纯文本。      text()内容更少。

7、序号作为限制条件   [序号]  如//input[8]

8、组合元素名、属性、内容 和元素层级关系进行定位。

    先定位到文本内容为小龙龙的label,然后找他的子元素input。

//label[text()='小龙龙']//input

    表示定位用户名的父元素的第二个input子元素。

//label[text()='用户名:']/../input[2]

9、 特殊写法

  svg标签写法

//*[name()="svg"]

属性没有值,xpath怎么写 

//div[@style=""]

轴定位表达式

用得最多的就是用来定位兄弟:  following-sibling:弟弟  和 preceding-sibling:哥哥  以及 先辈元素:ancestor

①表示查找 文本内容为用户昵称的label的弟弟元素 input 并且这个Input的 placeholder是请输入用户名。

//label[text()='用户']/following-sibling::input[@placeholder='密码']

②序号和谓语限制表达式同时使用,查找第一个弟弟。

//label[text()='用户']/following-sibling::input[@placeholder='密码']

③表示查找 文本内容为用户昵称的label的哥哥元素 input 并且这个Input的 placeholder是请输入用户名。

//label[text()='用户']/preceding-sibling::input[@placeholder='密码']

特殊写法:

只有行内样式style不同时xpath怎么写:

//form[not(@style='display: none;')]

同时满足符合xpath1定位但是不符合xpath2定位:

xpath1|not xpath2

注意事项:

注意xpath里面的 ' 和 " 可以混用,成对出现,但是用'' 和用""都行。 

css定位表达式语法:

层级关系

层级关系的表达:

    查找子孙元素:     空格                   如:form label

    查找子元素:         >                        如:form>div

    查找弟弟元素:     ~                        如:label~input

常见写法 

1、拥有attr属性的任意元素,如:[attr]     对应于xpath://*[@attr]

2、拥有attr属性的tag元素,如:tag[attr]   对应于xpath://tag[@attr]

3、attr=value键值对模式,如:[attr='value']  对应于xpath://*[@attr='value']

css选择器特有写法:

      #idValue  相当于[id='idValue']

      .showlove   相当于 [class='showlove']

      *= 表示包含  [class*='how']  表示的是元素class属性包含how,即相当于xpath中contains
      ^= 表示开头包含
      $= 表示结尾包含

4、css没有用元素内容进行定位的选择器  而xpath有://tag[text()='元素内容']

5、序号:nth-child(序号)   表示这个元素是父元素的第几个子元素(不管元素类型)

①表示要查找的是login这个div的第3个子元素,相当于xpath中的[序号]

#login>*:nth-child(3)

②表示的是查找login元素的子元素label,并且这个子元素,是div的所有子元素中的第2个。

#login>label:nth-child(2)

③表示要查找的是login这个div的第3个label子元素

#login>label:nth-of-type(3) 

有什么操作:click、sedkeys、clear

           Select:selectvisibletext(“可见文本”);

           Selectindex(索引从0开始,整数);

           Selectvalue(“HTML中的value值”);

           Switchto().Alert;跳转到弹出框

           Alert.accept,alert.dismiss弹出框的确定和取消

           refresh();刷新

           back、forward,向后、向前

           Selenium获取函数

           Gettext();获取文本

           Getattribute();获取按钮上的文本

           Gettitle();获取标题

           Geturl();获取当前网址

           Getwindowhandle();获取窗口的句柄

模拟键盘操作

需要说明的是,上面的脚本没有什么实际意义,但向我们展示了模拟键盘各种按键与组合键的用法。

  • import org.openqa.selenium.Keys;

在使用键盘按键方法前需要先导入 keys 类。

以下为常用的键盘操作:

  • sendKeys(Keys.BACK_SPACE) 回格键(BackSpace)

  • sendKeys(Keys.SPACE) 空格键(Space)

  • sendKeys(Keys.TAB) 制表键(Tab)

  • sendKeys(Keys.ESCAPE) 回退键(Esc)

  • sendKeys(Keys.ENTER) 回车键(Enter)

  • sendKeys(Keys.CONTROL,‘a’) 全选(Ctrl+A)

  • sendKeys(Keys.CONTROL,‘c’) 复制(Ctrl+C)

  • sendKeys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)

  • sendKeys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)

  • sendKeys(Keys.F1) 键盘 F1

Console确定元素是否可以操作

原因1:需要定位的元素在页面中被隐藏了

解决办法:重新定位,通过控制台输入js脚本点击

selenium 自动化测试  

selenium上传文件

1、如果是input 标签--input元素

如果是input元素的文件上传,可以通过Selenium当中的 send_keys 方式进行传递,

Java和python都可以用 sendkeys 上传

但是这种方式局限性比较大,如果遇到像通过 js 调用的组件会有一些问题;这个时候就需要通过一些和系统交互的方式完成上传操作,比如通过autoit、robot,pywinauto或者说pyautogui这些第三方库进行操作。

2、非input元素--如果不 是input 标签

                Java 可以用autoIT 或者robot 上传

                Python 可以用autoIT 或者pyauto  pywinauto  pyautogui上传

Robot类完成底层键鼠的控制。

鼠标基本控制方法

mousemove()
mousePress()
mouseRelease()

键盘输入:

  1、操作系统剪贴板

  2、直接输入

  keyPress keyRelease方法

robotframework

脚本execute_script 

浏览web网站时,经常需要进行滑动页面操作。Selenium自动化测试过程中,可以通过execute_script 执行js语句实现页面滑动。
常见的滑动场景分为四种:滑动至底部、滑动至顶部、滑动至具体位置、滑动至目标元素可见。

滑动至底部:

# 模拟鼠标滚轮,滑动页面至底部
js = "window.scrollTo(0, document.body.scrollHeight)" 
driver.execute_script(js)

滑动至顶部:
# 模拟鼠标滚轮,滑动页面至顶部

js = "window.scrollTo(0, 0)"
driver.execute_script(js)

滑动至具体位置:

driver.execute_script("window.scrollTo(x, y)")  # 滑动到具体位置

selenium 自动化测试

$x("//span[contains(text(),'单位所在市')]")[0].scrollIntoView(false)
js = "window.scrollBy(0, 500)"  # 向下滑动500个像素
 
js = "window.scrollBy(0, -500)" # 向上滚动500个像素
 
js = "window.scrollBy(500, 0)"  # 向右滑动500个像素
 
js = "window.scrollBy(-500, 0)" # 向左滚动500个像素

滑动至目标元素可见:

# 向下滚动至-元素可见

driver.execute_script("arguments[0].scrollIntoView();", element)

# 向上滚动至-元素可见

driver.execute_script("arguments[0].scrollIntoView(false);", element)

# js 执行修改按钮颜色

((JavascriptExecutor) driver).executeScript("document.getElementById('locatorid').style.backgroundColor = 'lightblue';");

     * js点击 修改按钮颜色

     * @param script js点击

    public void jsClick(String script){
        try {
            JavascriptExecutor jsRunner=(JavascriptExecutor)driver;
            jsRunner.executeScript("document.getElementById('"+script+"').style.backgroundColor = 'lightblue';");
        } catch (Exception e) {
            log.info("执行js"+script+"失败");
        }
    }

模拟鼠标操作

// 实例化actions类。调用doubleClick方法,双击目标元素
WebElement day = driver.findElement(By.id("20210817"));// 将需要双击的WebElement对象定义为day
Actions actions = new Actions(driver);// 实例化Actions类对象:actions,并将driver传给actions
actions.doubleClick(day).perform();
// 调用moveToElement方法,把鼠标移动到目标元素上
WebElement Qui = driver.findElement(By.id("QuickMenu"));
actions.moveToElement(Qui).perform();
// 调用contextClick方法,执行右击
WebElement eteams = driver.findElement(By.id("eteams"));
actions.contextClick(eteams).perform();
// 定位能拖拽的元素
WebElement move = driver.findElement(By.id("dragga"));
// 定位拖拽目标位置元素
WebElement target = driver.findElement(By.id("droppa"));
// 调用dragAndDrop方法,执行拖拽
actions.dragAndDrop(move, target).build().perform();
// 调用moveToElement方法,将鼠标移动到目标元素,并且单击
WebElement logouts = driver.findElement(By.id("logout"));
actions.moveToElement(logouts).click().perform();
}

Selenium判断函数:

           Isenabled();判断是否可用

           Isselected();判断是否被选择

           Ischecked();复选框是否被选中

自动化测试问答题

要确保selenium的成功率:  设置暂停时间、元素获取准确、设置超时间

自动化测试的步骤:  制定计划-----创建脚本----增加脚本-----回放脚本----分析结果报告

自动化测试需要测试用例吗?需要

软件测试的阶段:单元测试—集成测试----系统测试—验收测试

自动化测试属于那些测试阶段:系统测试阶段

怎样的功能才能需要进行自动化:需要自动重复使用、常用的

自动化测试的测试用例从哪里来?①  手工测试用例来选择②  适当给予补充

Selenium 测试:用到了单元测试的框架:Junit 、testng

其他博主知识收集处

java使用selenium实现模拟浏览器操作API大全 模拟登录_java模拟登录网站软件_tianjinsong的博客-CSDN博客

启动浏览器基础代码 

    public static void main(String[] args){
        System.getProperties().setProperty("webdriver.chrome.driver", "D:\\script\\java\\WebAPPAPIDDT\\DriverExe\\chromedriver.exe");
        ChromeOptions chromeOptions = new ChromeOptions();
        System.out.println(chromeOptions);
        ChromeDriver chromeDriver = new ChromeDriver(chromeOptions);
        chromeDriver.get("https://www.baidu.com/");
        JavascriptExecutor jsRunner=(JavascriptExecutor)chromeDriver;
        jsRunner.executeScript("//input[@value=\"百度一下\"]");
    }
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(“http://www.baidu.com”)
search_button = driver.find_element_by_id(“su”)
# 百度搜索按钮
driver.execute_script(“arguments[0].style.backgroundColor =‘lightblue’”, search_button)
#修改百度搜索按钮的背景值

selenium进行对cookie管理

【Java】获取cookie

WebDriver.Options manage = driver.manage();
Set<Cookie> cookies = manage.getCookies();
for(Cookie c : cookies){
   System.out.println(c.getName()+ " = " + c.getValue());
}

【Java】添加cookie

Cookie c1 = new Cookie("_vlco-","*************");
driver.manage().addCookie(c1);

Selenium:添加Cookie的方法 - 码农教程

【Python】对cookie管理

https://blog.csdn.net/weixin_38813807/article/details/129708032

各驱动下载地址:npmmirror 镜像站

进行识别base64,如图片

base64 注意超级鹰识别是短号后面的部分才是base64图像部分,所以删除【data:image/jpg;base64,】超级鹰才能识别出来

selenium 自动化测试

selenium 自动化测试

String inputStr="Test Base64 string";
String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
Boolean isLegal = inputStr.matches(base64Pattern);
if (!isLegal) {
    System.out.println("输入的不是Base64编码的字符串。");
     }

 识别base64正则表达时

String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";

 JAVA判断字符串是否为base64编码 - 代码先锋网文章来源地址https://www.toymoban.com/news/detail-431016.html

到了这里,关于selenium 自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Python自动化测试工具Selenium进行网页自动化?

    Selenium 是一个流行的Web自动化测试框架, 它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为 。 Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAutoGUI和AutoIt相比, Selenium更适合于处

    2023年04月09日
    浏览(126)
  • 自动化测试工具Selenium的语法续.

    OK,那么上篇博客我们介绍了如何搭建基于Java+selenium的环境,并且使用selenium的一些语法给大家演示了如何进行自动化测试的案例,那么本篇博客我们来继续学习selenium的一些其他的比较重要的语法,感谢关注,期待三连~ 目录 一、定位一组元素 二、下拉框处理 三、上传文件

    2024年02月10日
    浏览(58)
  • 自动化测试工具selenium的安装方法

    一、什么是selenium Selenium 是一套 Web网站 的程序自动化操作 解决方案。 通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面。 比如点击界面按钮,在文本框中输入文字 等操作。 Selenium 通过使用  WebDriver  支持市场上所有主流浏览器的自动化。 Webdriver 是一个

    2024年02月09日
    浏览(47)
  • Selenium教程:自动化浏览器测试工具

    Selenium是一款用于自动化浏览器测试的工具,它提供了一系列的API和功能,使得开发人员可以编写脚本来模拟用户在浏览器中的行为。无论是在Web应用程序的功能测试、性能测试还是数据抓取方面,Selenium都是一个强大且广泛使用的工具。 在开始使用Selenium之前,您需要进行安

    2024年02月07日
    浏览(82)
  • Web测试自动化工具Selenium的使用

    Selenium是一个Web应用测试的自动化工具,它通过模拟点击实现对Web应用的功能测试。测试时,除了Selenium,还需要对应的浏览器驱动,如在Chrome实现自动点击,则需要chromedriver。 Selenium支持多种语言和多种浏览器,本文仅记录python+chrome的使用。 1. 安装python 略 2. 安装Selenium 注

    2024年01月16日
    浏览(91)
  • 自动化测试工具-Selenium:Selenium的核心三大组件详解

    目录 1. WebDriver 1.1 WebDriver的通信方式 1.2 WebDriver的功能 1.3 W3C推荐标准 2. Grid 3. IDE Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。官方对Selenium认可的三大组件或API分别是: WebDriver、Selenium IDE、Grid。 其中,WebDriver又被称为Selenium的核心。 下面本篇文章将深度介

    2024年02月03日
    浏览(46)
  • 学会自动化必备工具-Selenium-再想着入坑自动化测试吧

    随着近些年IT行业的发展,软件测试人才的需求越来越大,也有很多小伙伴在考虑入坑,而软件测试中,收入相对较高的就是自动化了,所以这次就专门为大家简单介绍下自动化测试的必备工具Selenium。 Selenium是一款基于Web应用程序的开源测试工具 ,直接运行在浏览器中,支

    2024年01月23日
    浏览(56)
  • 自动化测试工具之Selenium IDE录制教程

            下载传送带:Selenium IDE · Open source record and playback test automation for the web         这里Darren洋以firefox火狐浏览器为例,将以上下载url直接在firefox浏览器中打开,点击对应下载按钮后,就会进入添加页面。         这里直接点击添加到Firefox浏览器的按钮即可,谷歌浏

    2024年02月08日
    浏览(45)
  • Python自动化测试工具selenium使用指南

    概述 selenium 是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点: 免费开源轻量级,不同语言只需要一个体积很小的依赖包 支持多种系统,包括Windows,Mac,Linux 支持多种浏览器

    2024年02月04日
    浏览(68)
  • WEB自动化测试(selenium工具)框架、面试题

                让程序员代替人为去验证web项目功能的过程      1)需求变动不频繁 测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包