精华内容
下载资源
问答
  • Selenium 定位动态元素

    2019-07-17 12:22:00
    目前,我是可以通过css定位到该元素的,但是click没用,这个元素动态的,只有鼠标指针移上去之后,ClassName的属性才会变化. 我尝试过使用ActionChains的move_to_element方法将鼠标悬停和ActionChains的double_click...
  • Selenium定位动态元素

    2020-05-27 13:39:00
    selenium做网页UI自动化的时候,会遇到网页元素id/name是动态生成的情况,可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方. 可以使用的方法有 starts-with(以什么开始) ends-with(以什么结束) contains ...

    selenium做网页UI自动化的时候,会遇到网页元素id/name是动态生成的情况
    一、可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方.

    1.可以使用如下方法:

    starts-with(以什么开始)
    ends-with(以什么结束)
    contains 包含**

    eg:
    driver.find_element_by_xpath
    ("//div[contains(@id, ‘btn-attention’)]")
    driver.find_element_by_xpath
    ("//div[starts-with(@id, ‘btn-attention’)]")
    driver.find_element_by_xpath
    ("//div[ends-with(@id, ‘btn-attention’)]")
    contains(a, b) 如果a中含有字符串b,则返回true,否则返回false
    starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false
    ends-with(a, b) 如果a是以字符串b结尾,返回true,否则返回false
    在这里插入图片描述
    2. 如果父级元素固定,可以先定位到父级元素,然后定位到下级元素

    展开全文
  • selenium定位动态id元素

    万次阅读 多人点赞 2017-01-16 16:40:24
    做web自动化时,常常会碰到需要定位元素id不是固定的,无法通过id进行定位,比如,我碰到的一个上传本地图片的“上传”按键元素,通过firebug查看该元素为 因该元素id是动态的,无法通过id属性进行定位,只好换...

     

    做web自动化时,常常会碰到需要定位的元素id不是固定的,无法通过id进行定位,比如,我碰到的一个上传本地图片的“上传”按键元素,通过firebug查看该元素为

    因该元素id是动态的,无法通过id属性进行定位,只好换成xpath.

    1.通过绝对路径定位:

    By.xpath("/html/body/div[3]/div[2]/div/form/div/div[5]/div/div[3]/div/div[3]/div/div/span/input[9]")----无法定位

    2.通过元素索引定位:

    By.xpath("//input[9]")---成功定位

    顺便补上xpath的另外几种定位方式:

    3.使用xpath属性定位

    By.xpath("//input[@id='kw1']")

    By.xpath("//input[@type='name' and @name='kw1']")

    4.使用部分属性值匹配(最强大的方法)

    By.xpath("//input[starts-with(@id,'file')

    By.xpath("//input[ends-with(@id,'_11')

    By.xpath("//input[contains(@id,'_')]")

    当然,还有其他的方式比如css,name等等,根据定位元素的属性进行选择,一种方式不行时就多试几种其他的方式。

    另外,可通过查找动态id的规律,来获取id并定位元素。

    比如:

     

    我这里测试需求是,需要上传4张图片,则需要定位4个上传按键,使用上面的//input[9]只能成功定位到第一个按键,后面3个还是无法定位,通过firebug查看元素发现,4个按键的id值虽然是动态的,但是有一定的规律,后面两项的数值是依次递增的,只要在获取的第一个ID值上进行累加即可。

     

    所以成功定位了第一个上传按键后,获取到他的ID值,就可以根据规律算出后面3个按键的id值,即可再通过id属性对其他的三个按键进行定位。

    部分代码如下:

    String s1=driver.findElement(By.xpath("//input[9]")).getAttribute("id");
    System.out.print(s1+"\n");//获取第一个上传按键的id file_0_35440853_1000001_9
    String ss1=s1.substring(0,16);//获取前半截不变字串  file_0_35440853_
    int ss2=Integer.parseInt(s1.substring(16, 23));//获取变化字符串  1000001
    int ss4=Integer.parseInt(s1.substring(24,s1.length()));//获取变化字符串  72
    String s2=ss1+Integer.toString(ss2+1)+"_"+Integer.toString(ss4+1);//第二个上传按键id file_0_35440853_1000002_10
    String s3=ss1+Integer.toString(ss2+2)+"_"+Integer.toString(ss4+2);//第三个上传按键id file_0_35440853_1000003_11
    String s4=ss1+Integer.toString(ss2+3)+"_"+Integer.toString(ss4+3);//第四个上传按键id file_0_35440853_1000004_12
    

     

     

    展开全文
  • selenium 网页动态元素定位

    千次阅读 2019-04-23 11:28:20
    使用selenium做网页UI自动化的时候,会遇到网页元素ID是动态加载生成的情况,这时候使用传统的xpath精确定位,会找不到元素,这时候可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方 可以使用的方法有 ...

    使用selenium做网页UI自动化的时候,会遇到网页元素ID是动态加载生成的情况,这个时候使用传统的xpath精确定位,会找不到元素,这个时候可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方

    可以使用的方法有

    starts-with(以什么开始)

    ends-with(以什么结束)

    contains 包含

     

    以contains 为例子:

    比如我们在定位中使用的xpath定位一个使用下拉框中的某一项值,我们得到的xpath为

    .//*[@id='cascader-menu-3932']/li[1]

     

    目标下拉框元素中的3932是一个后台动态加载给前台的值,每次刷新网页都会变化,这个时候使用传统的xpath定位,一定是找不到该元素的,可以将上述标黄的部分改写成模糊匹配

    [@id='cascader-menu-3932']

    [contains(@id,"cascader-menu")]

    其他的部分不改变,直接搬回来,然后就可以正常定位了

    .//* + [contains(@id,"cascader-menu")] + /li[1] = .//*[contains(@id,"cascader-menu")]/li[1]

    展开全文
  • 今天和大家分享几工作中经常使用的xpath定位,基本上能解决工作中所有定位.输入框类 1.有提示信息的,例如:placeholder=“请输入用户名”,则可以通过相应提示直接定位。 username=('xpath',"//*[@...

    前言

    今天和大家分享几个工作中经常使用的xpath定位,基本上能解决工作中所有定位。

    一.输入框类

    1.有提示信息的,例如:placeholder=“请输入用户名”,则可以通过相应提示直接定位。

    username='xpath',"//*[@placeholder='请输入用户名']"

    在这里插入图片描述
    在这里插入图片描述
    2.无提示信息的,如下图。则可以通过标签的属性值进行定位,前提标签属性不是动态的。例如:

    input_password = ('xpath','//input[@lass="ant-input ng-untouched ng-pristine ng-valid"]')
    

    在这里插入图片描述
    在这里插入图片描述

    二.按钮类

    按钮类是最容易定位的,直接通过按钮名称直接定位。注意下图“确定”和“取消”前后有空格
    在这里插入图片描述
    在这里插入图片描述
    1.精准定位,通过完全匹配去定位元素。比如:这里必须找到“ 确定 ”(注意这里“确定”前后有空格 )才能定位成功。

    #注意这里“确定”前后有空格 
    bt = ('xpath','//span[text()=" 确定 "]')
    

    注意:这里有很多同学可能定位到了,但是在执行代码的时候却无法点击,我们可以选择定位其父级button

    #注意这里“确定”前后有空格 
    bt = ('xpath','//span[text()=" 确定 "]/..')
    

    2.模糊定位,通过模糊匹配去定位元素。比如:这里必须找到“确定”(注意这里“确定”前后没有空格 )才能定位成功。

    bt = ('xpath','//span[contains(text(),"确定")]')
    
    

    三.通过一个元素去定位另一个元素

    这种方法能帮助我们解决一些相对困难的定位,例如:我们要去获取 用户名.txt 文件的大小。
    在这里插入图片描述
    1.我们先直接看看html,文件大小的属性值一模一样,无法单独获取。有同学可能会想到去定位一组元素,但是这里取出来的值,不清楚那个是 用户名.txt 的大小。
    在这里插入图片描述
    2.我们可以通过先定位文件名,然后通过文件名去定位其大小。145 div 同级

    145div同级
    这是代码收缩后样子
    在这里插入图片描述
    这里要补充两个知识点,preceding-sibling::标签[索引] 和 following-sibling::标签[索引]。
    例子:
    第一步://span[text()=“3318.txt”],先定位文件名
    第二步://span[text()=“3318.txt”]/…/…/… ,找到与文件大小同级的标签
    第三步://span[text()=“3318.txt”]/…/…/…/following-sibling::div[1],查看大小标签在 //span[text()=“3318.txt”]/…/…/… 下边第几个。这里是在 //span[text()=“3318.txt”]/…/…/… 下面第一个div

    size = ('xpath' , '//span[text()="3318.txt"]/../../../following-sibling::div[1]')
    

    preceding-sibling 与 following-sibling 用法一致,following-sibling上定位同级下面的标签,preceding-sibling定位同级上面的标签

    四.结束语

    以上定位是小编工作中自己总结,如有错误希望各位指出!

    展开全文
  • 在工作中用python和selenium写了段自动化程序,遇到了元素id、name等动态变化,其他元素有一样,无法通过传统的xpath定位元素方法进行定位,还好在XML中有text不一样,所以通过xpath的text方法定位元素解决了这...
  • 今天在一个系统中定位元素,上面是一个点击框,点击之后会出现可以选择的下拉框 如图: 但是在开发者选项中无法定位到这里的元素,看了下源码,源码中并没有这些选项 点击其中有的选项之后,才会出现对应的代码 ...
  • 今天在selenium2library库中发现了一个适合使用于定位动态元素的关键字,那就是—Get Element Attribute;获得元素的属性。 在RF界面中,输入这个关键字后,鼠标移至关键字处,按住ctrl键,则会弹出使用说明。原文...
  • 利用Xpath进行动态定位元素

    千次阅读 2020-04-21 15:02:24
    xpath中提供了三非常好的方法来为我们定位部分属性值: 1、contains(a, b) 如果a中含有字符串b,则返回true,否则返回false 2、starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false 3、ends-with(a,...
  • 今天再给大家分享一个定位不到元素的原因——动态id。 没有打开新页面、没有alert、没有frame、加了等待时间,但是还是定位不到元素?很有可能是你要定位元素的属性是动态的,即每次打开页面,这个元素的id或者...
  • 今天再给大家分享一个定位不到元素的原因——动态id。没有打开新页面、没有alert、没有frame、加了等待时间,但是还是定位不到元素?很有可能是你要定位元素的属性是动态的,即每次打开页面,这个元素的id或者...
  • selenium的八种元素定位...用法:只有当需要定位元素有id属性时才能使用(动态的id,也不能使用) 排错(定位时可能出现的错误): 1、NoSuchElementException #定位元素名称写错 2、'list'objecthasnoattrib...
  • 昨天碰到一个奇葩的问题,一个弹出框所有元素ID竟然的动态的,关闭后再打开,里面的ID又变! 如下图: 我把弹出框关闭再打开对比,天啊撸,日了狗了~ID边了! 解决办法:目前知道的有三种方法:Click Element /...
  • 需求:一个定位position:fixed;的菜单栏,移动到底部时依然存在,影响页面美观,我们希望当滚轮移到页面末尾时菜单栏更换为绝对定位。 解决:JS没有直接获取元素距离页面底部距离的函数,因此可利用全文高度-当前...
  • Firebug,firefox浏览器的一个插件,可以方便的查看html,编辑html,复制html,复制 xpath,以及查看cookie信息等。 Selenium的元素定位主要有以下几种方式。 find_element_by_id() find_element_by_name() ...
  • appium元素定位

    千次阅读 2018-08-09 12:31:57
    本文介绍一下appium的常用的几种定位方式,id定位、xpath定位、name定位、坐标定位。就四种吧,本人自己就只经常用到前两种。剩下的两种不是经常用,为什么不经常用下文会说明的。先卖小关子。O(∩_∩)O哈哈~ ...
  • 确定   //div[ contains(text(),"确定") and contains(@id,'MessageDialog_')] 处理类似于这种,一个页面上有多个相同文本的控件,且控件又没有固定id的元素定位。 
  • 有时候定位元素属性值会一直变化,如图中选择框中的选项,此时如果我们用id查找元素xpath://*[@id="select2-getWay-gn-result-afdi-1"]则会找不到元素,此时我们可以通过查找该元素的父级元素定位,但父级元素...
  • UI自动化定位元素之span类型元素

    千次阅读 2018-05-08 11:42:56
    帮朋友定位元素,发现要做UI层自动化,还是需要对前端知识了解多谢,比如JS,比如JQuery,这样能更好的借助这些语言定位元素,操作元素。记录一下。 span的赋值与取值 1、span的文本的取值。 js取的值并不是用...
  • selenium定位不到元素常见的问题

    万次阅读 2018-07-03 19:34:28
    很有可能是你要定位元素的属性是动态的,即每次打开页面,这个元素的id或者class等元素属性是动态生成的。代码执行时,元素的属性已经与之前不同,用之前的属性值去定位自然是定位不到的,会抛出...
  • 欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 ...
  • css元素定位与宽高自适应

    千次阅读 2019-09-23 10:27:04
    css元素定位属性: position属性:定义简历元素布局所用的定位机制。...absolute:生成绝对定位元素,相对于static定位以外的第一个元素进行定位元素的位置通过left 、top、right、以及bottom属性进行规定 ...
  • RobotFramework js 选择动态元素

    千次阅读 2018-03-20 20:00:08
    RobotFramework js 选择动态元素 最近使用rf 测试又遇到一个非标准下拉列表选择的问题 这里记录一下解决办法,希望对后面其他童鞋有帮助 这个控件是JS 动态加载的div, 是非标准的控件。 这些元素定位需要通过,...
  • 背景:在web自动化中,因为不是所有元素都有唯一的id、name、linktext等属性或是动态id,除非是找出所有元素进行操作集合,不然就要考虑使用xpath来定位...1、第一个xpath定位元素语法://tag[@attribute='value'...
  • selenium无法定位元素可能的原因

    千次阅读 2019-07-18 11:03:56
    selenium无法定位元素可能的原因 1、动态id,或者动态属性 # 模糊查询解决 //*[contains(@属性,“部分不变的属性值”)] //*[starts-with(@属性,"开头固定不变的属性值")] //*[ends-with(@属性,"结尾固定不变...
  • 元素定位---使用 XPath 定位元素

    千次阅读 2018-01-17 16:06:58
    XPath 是 XML 路径语言,用来查询 XML 文档里中的节点。主流的浏览器都支持 Xpath,因 ... Xpath 语言是基于 XML 文档癿的树结构,并提供了浏览树的能力,通过多样的标准来选择...利用 Xpath 来定位元素非常方便,但是,便
  • appium 元素定位方法

    千次阅读 2018-08-27 14:36:29
    uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Inspector:Appium自带的一个功能,只有mac下可以使用该功能   下面是用monitor抓取到的...
  • selenium定位弹框元素

    千次阅读 2020-07-14 17:34:04
    selenium定位弹窗元素 、 弹出框是alert类型: selenium提供switch_to_alert方法:捕获弹出对话框(可以定位alert、confirm、prompt对话框) alert=switch_to_aler; alter.text 查看alter的文案 确认alter...
  • selenium定位iframe框架内元素

    千次阅读 2019-05-23 11:50:58
    一、iframe的含义:b/s架构都使用iframe,官方的定义是这样的:【iframe 元素会创建包含另外一个文档的内联框架(即行内框架)】。什么意思呢,就像是我们的某个主页,里面有好多小模块,每 个 小模块用这个叫做...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,028
精华内容 55,211
关键字:

如何定位一个动态的元素