以下演示操作以该网址中的输入框为例:https://learn.letskodeit.com/p/practice 一.使用input[class=inputs]验证元素是否唯一 注意:使用“class ='  ' ”时如果需要被定为的元素一个calss有多个值,需要将值全部写入,否则无法定位 正确写法:input[class='input displayed-class'] 错误写法:input[class='displayed-class'].input[class='input'] 二.直…
一.通过内容的方式定位元素 使用Linktext和PartialLinkText定位元素的前提需要"文本"在“a”标签内,selenium才可以找到链接文本或者部分链接文本的元素. Linktext适用于超链接文本 PartialLinkText适用部分超链接文本 二.操作演示,使用Linktext定位a标签的超链接文本“新闻”(以百度网站为例) package basicweb; import org.openqa.selenium.By; import org.openqa.sel…
前言 S方法可以灵活定位元素特别注意,比如to_left_of参数的使用是查找在某个元素左侧的元素,但是默认只会找第一个S方法可以灵活运用,特别是没有id,没有name,只有classname的情况,可以多次使用方向的判断,比如:<li class="nav_com_li  "><a class="current" href="/nav/watchers" target="">动态</a>&…
通过linkText定位 linkText是根据链接的文本来定位,如下图,导航上全是链接 此时我想找“新闻”这个元素,那么我就可以使用linkText方式定位,语法: By.linkText(“新闻”); WebElement接收对象代码如下: WebElement element = driver.findElement(By.linkText(“新闻”)); 通过partialLinkText定位 这个与LinkText方法类似,通过给出的链接文本去定位,这个链接文本只要包含在整个文本中即可…
1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是为了学习和实战的. 2.1被测网址 1.被测网址的地址: https://login.anjuke.com/login/form?history=aHR0cHM6Ly9iZWlqaW5nLmFuanVrZS5jb20v 2.网页如下图: 2.2代码设计 2.3参考代码 package lessons…
一.背景:一个表单中,要修改一些li中有class=box的样式,将它的background设置为red红色.一般的做法是我们可以先找到父级元素 ,然后由父级元素找到所有相关tagName,最后,来一个if判断,如果class属性为box,则修改之 var oUl = document.getElementById("ul1");                                  //加上它的上级元素,可以避免我们筛选出许多无用的节点出来 var aLi = oUl.g…
因为ie8一下不兼容                 document.getElementsByClassName()                 功能:通过class的名字获取符合条件的元素                   node.getElementsByClassName()                 指定node节点下,符合条件的元素.   所以我们自己封装一个兼容IE8以下,获取className节点的函数. //兼容IE8以下,获取className节点的元素. f…
01.自定义属性 1.自定义属性: 作用:保存数据 通用的自定义属性的前缀 data-属性="属性值" 注:自定义的属性不能通过 元素.属性 取属性值 ,需使用getAttribute(); 2.自定义属性的获取 元素.getAttribute('data-url'); 3.设置 节点.setAttribute('属性名称','修改后的属性值'): (修改后的属性值是一个变量的时候,不加引号) 4.删除 元素.removeAttribute('data-url'); 简单测试:<…
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. 2.什么是toast? Android中的Toast是一种简易的消息提示框.当视图显示给用户,在应用程序中显示为浮动.和Dialog不一样的是,它永远不会获得焦点,无法被点击.用户将可能是在中间键入别的东西.Toast类的思想就是尽可能不引人注意,同时还向用户显示信息,希望他们看到.而且Toast…
今天,被一个很简单的问题坑了一下午,基础不扎实.(js根据class名称来删除Dom元素) 但是结果却不是这样的.弄了好久还不知道怎么回事.最后找到了答案. 结果如下:为啥还有test2,4,6呢. 现在要删除一个父节点的所有的子节点,删除节点的操作其实类似于FIFO链表,把第一个删除掉,第二个节点会补上作为第一个,第三个会补上做为第二个,以此类推 所以做这种操作的时候,要倒着删除啊,切记. 这个就是Js删除DOM节点的一个坑,请大家小心,误踩.JS根据ClassName来删除元素…
以下演示操作以该网址中的内容为例:https://learn.letskodeit.com/?_ga=2.143454972.85111248.1555037144-697706367.1554889145 一.如果元素的 ID 不唯一,或者是动态的,或者 name 以及 linktext 属性值也不唯一, 对于这样的元素,我们就需要考虑用 xpath 来查找元素了,然后再对元素执行操 作. 二.不管用什么方式查找元素,id.Name.Xpath.css—>都需要在页面上查找到唯一的元素. 都应…
一.如果元素的 ID 不唯一,或者是动态的,或者 name 以及 linktext 属性值也不唯一,对于这样的元素,我们 就需要考虑用 xpath或者css selector 来查找元素了,然后再对元素执行操作. 二.不管用什么方式查找元素,id.Name.Xpath.css—>都需要在页面上查找到唯一的元素. 都应该只找到一个匹配的 node(节点),除非想要查找一批元素放集合里,然后来操作集合. 三.css语法 标签名[属性 = '属性值'] tag[attribute='value'] 以…
以下案例使用https://jqueryui.com/网站为例. 一.如何确定元素是否包含在iFarme中? 1.按F12打开发者选项,定位到指定的元素. 2.向上查找元素是否被包含在ifarme标签中. 二.案例演示 package switchto; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; imp…
一.读取xml文件中参数 1.案例演示--->创建一个需要读取数据的类 package testclasses; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import org.testng.annotations.Parameters; import org.testng.annotations.AfterClass; public class TestNG_Parameters…
一.IInokedMethodListener 1.实现一个类来监听testcase的运行情况. package listenerspackage; import org.testng.IInvokedMethod; import org.testng.IInvokedMethodListener; import org.testng.ITestResult; /** * 监听*/ //所有监听的方法都由接口提供,所以我们需要先实现接口 public class CustomerListener…
一.鼠标悬停 1.在web网站中,有一些页面元素只需要我们将鼠标指针放在上面就会出现被隐藏的下拉框或者其它元素,在自动化的过程中我们使用Actions类对鼠标进行悬停操作. 2.案例演示 package actionsclass; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.juni…
一.网页页面都是由html+css和javaScript组成的,如果页面中没有javaScript的存在,就不会有操作动作的执行,例如页面上你点击的按钮或者链接都离不开javaScript.(这一节不是为了讲javaScript的知识,对javaScript感兴趣的同学可以自己去网上找资料学习). 二.如何用javaScript打开百度页面,并定位百度搜索输入框输入值? package basicweb; import java.util.concurrent.TimeUnit; import…
以下演示操作以该网址中的内容为例:https://learn.letskodeit.com/?_ga=2.143454972.85111248.1555037144-697706367.1554889145 一.如何构建一个有效的XPath 1.在使用XPath定位元素时,我们可以通过“//./”l来简化我们的Xpath路径. 2.在实现自动化的过程中我们一般使用相对路径查找页面元素,这样效率更高,当页面中的标签节点发生变化时,对使用相对路径的方式来查找元素的影响相对较少. 3.查找liogin…
以该网址为例(https://learn.letskodeit.com/p/practice) 一.通过子节点定位元素 1.例如我们需要定位这个table表格 2.当我们通过table标签直接定位时,定位到了5个匹配的结果,这样就会导致元素不唯一,最终无法成功查找到需要的元素 3.因此我们在定位元素的过程中,需要再将table标签的上一级标签节点给出,table上级标签为fieldset 4.标签与上级节点之间需要用“>”分隔,正确的写法为“fieldset>table”(如果通过这两个节点仍…
以下演示操作以该网址中的输入框为例:https://learn.letskodeit.com/p/practice 一.css样式中有三种通配符“^.$.*” 语法:tag[attribute<special character>=’value’] 标签[属性  通配符='属性值'] 二.^代表文本的开始 当我们使用“input[class = 'inputs']”查找元素时,浏览器自动帮我们匹配到了一个“class”等于“inputs”的元素 当我们需要找到“class”属性的值包含“inp…
一.在定位元素时需要HTML标签,HTML是超文本标记语言,我们打开web网页是看到的内容就是通过html语言来实现的,按键盘“F12”调用开发者选项后,“Elements”栏中显示的就是网页的HTML代码.(没有接触过HTML的同学可以先去了解一下HTML的基础内容,这样有利于元素定位的学习) 二.用谷歌浏览器打开百度,并搜索“selenium webdriver”(通过ID.XPath的方式来进行元素定位) 输入框 “百度一下”按钮 package basicweb; import org.…
一.javaScript弹框没有id.也没有xpath,在F12开发者选项中无法直接通过鼠标去选择弹窗来确定元素在代码中的位置. 弹窗有两种,一种实只有"确定"按钮的alert类型的弹窗: 另一种是带有"确定"和"取消"按钮的弹窗: 二.如何在代码中找到javaScript弹窗的位置? 1.首先我们需要定位出能够调出来弹窗的HTML的按钮: 2.在对应的标签中我们可以看到,它们的属性中都带有一个onclick带有函数值,例如alert按钮对应的函…
一.如何创建对象仓库 package pageclasses; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class SearchPageFactory { WebDriver driver;…
一.为什么要用Log4j记录日志? 日志记录对于任何应用程序都非常重要. 它可以帮助我们快速调试代码,通过收集代码执行的信息让代码容易维护. 二.Log4j 是什么? Apache为Java提供的日志管理工具.他与System.out.println()的作用相似,用来跟踪.调试.维护程序. 三.Log4j的优势 1.Log4j 可以用很小的工作量就能实现一个非常好的日志基础结构. 2.允许对不同日志级别的日志进行分类(Trace, Debug, Info, Warn, Error and Fa…
一.实例演示 package log4jtutorial; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class LoggingDemo { // 首先需要定义一个log对象 // 定义成static final是因为只需要这一个实例,不能再有子类,多次调用的都是这一个实例,所以我们可以一直用这个对象来记录日志,不需要创建新的对象. // .getLogge…
一.创建xml文件 1.创建xml文件 在项目中我们需要专门建一个文件夹来放xml文件或者是其它文件. 2.然后对文件夹进行命名 3.选择new  其它 4.选择XML File 5.给xml文件命名为log4j2.xml 6.创建成功 二.使用xml格式来定义配置文件 开始写标签 <?xml version="1.0" encoding="UTF-8"?> <Configuration> <!-- appenders表示日志存放的位置…
一.如何将log输出到文件中? 1.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <Configuration> <!-- 将log信息记录到指定文件夹中 --> <!-- “.”表示当前路径, ./logs表示将log信息存放到该项目的logs文件夹中 --> <Properties> <Property name="basePath&quo…
一.如何给不同的包设置不同的日志级别? 1.针对不同的包来记录不同级别的日志信息 2.在日志xml配置文件中加入配置信息(红色标注) <?xml version="1.0" encoding="UTF-8"?> <Configuration> <!-- 将log信息记录到指定文件夹中 --> <!-- “.”表示当前路径, ./logs表示将log信息存放到该项目的logs文件夹中 --> <Properties…
一.TestNG 介绍 1.TestNG 是一个来自 JUnit 和 NUnit 的测试框架,它具拥有更多的功能,提高了 执行的效率. 2.TestNG 是一个开源的自动化测试框架 去除了老框架的大部分限制,借助于简单的注释.分组.排序和参数化这些功能.使脚本开发人员能够编写更灵活.更强大的测试用例脚本. 二. TestNG的优点 1.可以生成日志 2.注释使代码高效且易于管理 3.能够生成执行的HTML报告 4.测试用例可以分组并按优先级排序 5.可以实现并行测试…
一.TestNG注解的testcease不是自上而下运行的,而是按照方法名的字母排序或数字的大小顺序运行的. 二.断言:判断返回的结果与我们的预期结果是否一致. 1.Assert.assertTrue(); 2.Assert.assertFalse(); 注意: Assert true语句如果实际输出时false,测试不通过,并停止执行测试. Assert.assertFalse()与Assert.assertTure()正好相反,也就是说,如果您希望某个元素在页面上不存在是测试继续执行,就可以…