selenium模糊匹配控件

起因:在查找一些控件时,可能控件的一些属性是变化的,那在匹配时需要进行模糊匹配,模糊匹配,使用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匹配,有遇到案例在补充

时间: 2024-07-29 18:32:21

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

python selenium 处理时间日期控件(十五)

测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日期,点击后弹出日期列表供我们选择日期,自己找了一个日期控制演示一下,通过两次定位,选择了日期 #-*- coding:utf-8 -*- import time from selenium import webdriver driver = webdriver.Chrome() driver.get

selenium - js日历控件处理

# 13. js处理日历控件 ''' 在web自动化的工程中,日历控制大约分为两种: 1. 可以直接输入日期 2. 通过日历控件选择日期 基本思路: 利用js去掉readonly属性,然后直接输入时间. ''' from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.12306.cn/index/') js_pha = 'document.getElementById("train_da

Java+Selenium——如何处理日历控件——方法一

如果遇到这样的日期控件,直接把当做正常的文本输入框,然后调用sendKeys()方法,直接传一个带格式的日期数据进入就可以. package rjcs; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Set; import org.openqa.selenium.interaction

Java+Selenium——如何处理日历控件——方法二

有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据.网页上日历控件一般,是一个文本输入框,鼠标点击, 就会弹出日历界面,可以选择具体日期.这篇,就是介绍用selenium如何自动化脚本实现. 先看一个完全模仿手工操作的场景,点击输入框,点击下一个月,再点击一个日子. package rjcs; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar;

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

[环境信息] Python34+IE+windows2008 [说明] 1.对于日期控件,没有办法通过定位元素再直接传值的方式处理.可以采用执行JavaScript处理. PS:还要去学学js怎么写,不然要用的时候就只有到处copy了. [示例] 1.对于如下格式的日期控件需要用JS处理. 2.处理方式:通过driver.execute_script(js)执行. #问题消除时间,调用JS的当前时间 js = "function getCurrentDate() {" " v

DevExpress控件TExtLookupComboBox实现多列模糊匹配输入的方法

本方案不需要修改控件源码,是完美解决支持多列模糊匹配快速输入的最佳方案!!   1.把列的Properties属性设置为ExtLookupComboBox. Properties.IncrementalFiltering := False;Properties.CaseSensitiveSearch := False; Properties.DropDownListStyle := lsEditList; 当然,接着要完成设置Properties.View,Properties.KeyField

转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果

是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题所以没有动手处理.今天闲来无事琢磨了一下这个需求.我的解决思路如下所示: 1.监听文本框的onkeyup事件:实时传递其值到某个函数: 2.编写某个函数接收文本框的值通过zTree的模糊查找方法getNodesByParamFuzzy(key,value)获得: 3.将匹配到的节点列表结合重新赋值给

DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案

本方案不需要修改控件源码,是完美解决cxgrid或TcxDBExtLookupComboBox支持多列模糊匹配快速输入的最佳方案!! 小哥摸索多日,终于搞定cxgrid和TcxDBExtLookupComboBox可以支持多列模糊查找输入了! 纵观网上的方案,不是修改控件源码,就是自己封装弹窗,代码太长太复杂,后遗症也多多,而自己封装用户体验也是难以尽善尽美,因为UI风格皮肤都不一致啊,嗷嗷--本人吐血奉献不需要修改控件源码的方案,堪称史上最完美解决方案!!走过路过不要错过,欢迎收藏! 修改方案

dev 中 字符串转中文拼音缩写,对grid列表进行模糊匹配,grid获取焦点行,gridlookupedit控件用拼音模糊匹配下拉选项

番外篇:. //该方法是将字符串转化为中文拼音的首写字母大写, public static string RemoveSpecialCharacters(string str){try{if (string.IsNullOrWhiteSpace(str)) { return str; }var result = Regex.Replace(str, "[^0-9A-Za-z]", "");if (string.IsNullOrWhiteSpace(result))