起因:在查找一些控件时,可能控件的一些属性是变化的,那在匹配时需要进行模糊匹配,模糊匹配,使用xpath

定位方式有种:

contains(属性名,字符串):使用文本匹配,功能很强大

starts-with(属性名,字符串):根据开头进行模糊匹配

ends-with(属性名,字符串):根据结尾内容进行匹配

matchs(属性名,字符串):根据正则进行匹配

案例:

如图,点击底部的一个收藏,弹出OK按钮,需要点击这个Ok,就能正常执行下一步

<span type="1">OK</span>

 原本是通过css,进行定位,发现每打开商品,商品的页面开始都会有变化,试试模糊匹配

从浏览器复制出来的css地址为:

#layermbox0 > div.layermmain > div > div > div.layermbtn > span
重新打开页面,变化为
#layermbox1 > div.layermmain > div > div > div.layermbtn > span

前提已初始化了driver,并且已经可以启动

模糊匹配

使用starts-with
driver.findElement(By.xpath("//span[starts-with(@type,'1')]")).click();
//span:外部标签 starts-with(类型或者内容,值)

使用contains

driver.findElement(By.xpath("//*[contains(text(),'ok')]")).click();
看其他人对text还有另外一种写法
driver.findElement(By.xpath("//*[text()='ok')]")).click();

目前没有使用正则,和ends-with匹配,有遇到案例在补充

selenium模糊匹配控件的更多相关文章

  1. selenium操作日历控件

    日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉 ...

  2. python selenium 处理时间日期控件(十六)

    测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日 ...

  3. 17.Selenium+Python日期控件小案例

    1.web上的控件种类十分多,但是大致分为2种,一种为类型是input的且可以输入,第二种为类型是input的且属性为readonly,文本框不可编辑 2.第一种类型为可以输入的,直接send_key ...

  4. selenium - js日历控件处理

    # 13. js处理日历控件 ''' 在web自动化的工程中,日历控制大约分为两种: 1. 可以直接输入日期 2. 通过日历控件选择日期 基本思路: 利用js去掉readonly属性,然后直接输入时间 ...

  5. Selenium+java - 日期控件的处理

    前言 一般的日期控件都是input标签下弹出来的,设置日期使用selenium中的sendKeys 方法就可以解决. 但是我们也会碰到下面的时间日期控件(这个时候这个文本框是不允许我们输入时间的)如图 ...

  6. selenium 处理日期控件

    今天遇到日期控件无法处理的问题,在北京-air的帮助下,看了下这篇blog http://www.cnblogs.com/Fskjb/archive/2011/10/27/2227111.html 根 ...

  7. selenium python 时间控件的输入问题

    对于时间的选择问题,查到的大部分为两种情况: 1.存在readonly属性的 2.没有readonly属性的 可直接赋值send_keys() 测试用例中刚好是没有readonly属性的 且定位不到弹 ...

  8. 12 Python+selenium对日期控件进行处理(采用执行JS脚本)

    [环境信息] Python34+IE+windows2008 [说明] 1.对于日期控件,没有办法通过定位元素再直接传值的方式处理.可以采用执行JavaScript处理. PS:还要去学学js怎么写, ...

  9. python selenium 处理时间日期控件

    # -*- coding: utf-8 -*- from selenium import webdriverfrom time import sleep driver = webdriver.Fire ...

随机推荐

  1. haml

    创建: 2019/05/23 文档: http://haml.info/docs/yardoc/file.REFERENCE.html 安装  安装 gem "haml"     ...

  2. window 环境下在虚拟机上安装php环境

    转发:https://www.cnblogs.com/orangegem/p/7191659.html 安装linux工具 :https://blog.csdn.net/z15732621582/ar ...

  3. 定时器详解和应用、js加载阻塞、css加载阻塞

    1.setTimeout().setInterval()详解和应用 1.1 详解: setTimeout.setInterval执行时机 1.2 存在问题: setInterval重复定时器可能存在的 ...

  4. Unity 着色器训练营(2) - MVP转换和法线贴图

    https://mp.weixin.qq.com/s/Qf4qT15s9bWjbVGh7H32lw 我们刚刚公布了Unity 2018.1中,Unity将会内置可视化编程工具Shader Graph, ...

  5. 树的直径 【bzoj3363】[Usaco2004 Feb]Cow Marathon 奶牛马拉松

    3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松 Description ​ 最近美国过度肥胖非常普遍,农夫约翰为了让他的奶牛多做运动,举办了奶牛马拉松.马拉 松路线要尽 ...

  6. React方法论

    按照目前学习进度不定更新 react渲染的效率,看起来是全体的渲染,其实react在虚拟dom上的处理简直完美.它会过滤掉那些原来就有的东西,不去全体地重复渲染一遍. 即将进入实战,React至今的个 ...

  7. sweetAlert()参数配置

    alertTypes = ['error', 'warning', 'info', 'success'], defaultParams = { title: '', text: '', type: n ...

  8. Docker从入门到实战(三)

    Docker从入门到实战(三) 一:安装Docker 1. linux系统脚本安装 Docker基于linux容器技术,面向服务器端,Docker只能安装运行在64位计算机上(社区有对32位的支持), ...

  9. myeclipse集成svn客户端

    转载大神 https://blog.csdn.net/tandeng19901222/article/details/5979075

  10. springboot 参数校验详解

    https://www.jianshu.com/p/89a675b7c900 在日常开发写rest接口时,接口参数校验这一部分是必须的,但是如果全部用代码去做,显得十分麻烦,spring也提供了这部分 ...