使用while循环+try-except定位元素】的更多相关文章

selenium学习过程中,发现自己遇到的最大的困难不是那些元素的操作,而是元素的定位,有时候明明利用firebug将xpath路径确认好了,但是在定位元素的时候还是会报错,后来在度娘上找到了一个方法,算是元素定位方法中的一个比较有用的吧,那就是利用while循环去定位元素,直到成功定位到元素后,再退出循环,否则将会一直定位元素:…
版权声明:本文为博主原创文章,转载请注明出处. 定位单个元素 WebDriver提供了八种元素定位方法,Java中定位语句形如:driver.findElement(By.id()): 何为元素定位?当我们使用百度进行信息搜索时,打开网址后,我们的眼睛会聚焦到搜索栏,然后在搜索栏中输入我们需要搜索的关键,然后点击"百度一下"按钮,从上面的描述中我们可以看到,要完成搜索我们必须找到"搜索栏 && 百度一下按钮",我们有眼睛可以浏览页面去定位"…
学习小结: 这里使用ChromeV73+web driver 2.46 #几种定位方式: #Autotest.py from selenium import webdriver from selenium.webdriver.common.by import By import time dr = webdriver.Chrome() dr.get("http://www.baidu.com") #通过各种元素:name,id,class,tag,text dr.find_elemen…
1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: findElement(By.xpath(“”)); 通过元素的标签名称定位元素: findElement(By.tagName(“”)); 通过元素的链接名称定位元素: findElement(By.linkText(“”)); 通过元素的类名定位元素: findElement(By.className…
   在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException),一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案: 如果ifr…
#打开网页前三步 from selenium import webdriver driver=webidriver.Chrome() driver.get("https://www.baidu.com")   #设置休眠时间 import time time.sleep(2)   #刷新页面 driver.refresh()   #页面切换 driver.back()#返回上一页 driver.forward()#切换到下一页   #设置窗口大小 driver.set_window_s…
在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub List<String> list=new Arr…
转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出bug.不妨把这个问题当做一道面试题目,我想一定能难道不少的人.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import java .…
注明:本内容从https://my.oschina.net/flashsword/blog/147334处转载. 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下. 1. By.name() 假设我们要测试的页面源码如下: <button id="gbqfba" aria-label="Google Search&quo…
什么是元素?我们知道网页上有什么内容显示出来,比如一个按钮,一个输入框,一张图片,都可以理解成元素,这些元素是由html代码构成的,比如图片可以用<img>标签来展示,一个输入框可以用<input>标签来表示...... 如上图的百度搜索框,通过HTML源码,我们可以看到下图的代码: 它是一个input,其中有type.class.name.id等属性,我们可以根据这些属性值来定位元素. Selenium 功能丰富的API 提供了多个定位策略如:Name.ID.CSS 选择器.XP…
一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Inspector:Appium自带的一个功能,只有mac下可以使用该功能   下面是用monitor抓取到的页面元素     下面使用Appium Inspector定位的元素   二.元素定位   1.格式:find_element_by_定位方式(value)   通过id定位 (取resource…
webdriver中定位元素,报无法找到元素的问题时,需要查看以下几点: 1 用火狐的firebug插件定位元素,确保这个元素的定位正确: 2 在火狐的firebug插件的,在html页签中输入frame或者iframe去查看这个元素所在的frame或iframe是什么: 写如下语句: WebElement iframe = driver.findElement(By    .xpath("//*[@id='ContentFrame']"));  driver.switchTo().f…
如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一.通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性.在web页面上的元素也有这些属性,例如,id.name.class name.tag name等. 二.在找查某人的时候可以通过位置属性,例如,x国.x市.x路.x号.Xpath和CSS就提供了这种以标签名为层级关系的定位方式. 三.可以借助相关他人的属性来找到某人,例如,我没有小明的联系方式,但我有他爸爸的手机号,那么通过他爸爸手机号也可以找到小…
前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆盖到) 一.安装Selenium Builder 在火狐浏览器的附加组件中搜索添加Selenium Builder即可.安装好后如下图所示: 二.直接运用 1.打开你要测试的URL或者打开插件后输入你要测试的URL,如下图 2.点击后弹出一个弹窗,如下图: 注:如果你是直接在你要测的网页页面打开这个…
Windows上定位元素我用的是uiautomatorviewer 这个工具在你的SDK-tools目录下,点击uiautomatorviewer.bat启动,注意appium在跑的时候是取不到的 工具使用很简单,在你的设备想要定位元素的页面点击Device Screenshot或Device Screenshot with Compressed Hierarchy 如果同一属性有多个元素公用,那么定位的是第一个 下面说下对应关系 driver.findElementByName("杭州&quo…
定位元素要掌握css技术,核心就是要掌握元素定位. 一般把下面这条规则作为所有css样式表的第一条,初始化所有元素的内边距和外边距都为0: * {padding:0;margin:0;} 盒模型浏览器为页面中的每个元素生成一个矩形盒子.作为该元素的容器.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看到这些盒子. 元素盒子的3个属性:边框(border),可以设置边框的宽窄.样式和颜色:内边距(padding),盒子内容区与边框的间距:外边距(margin),盒子与相邻元素的…
三.WebDriver定位元素 推荐使用的webdriver是firefox,因为他的firebug更能可以帮助定位页面元素使用 # create a new Firefox session cls.driver = webdriver.Firefox() 1.通过id定位 可以通过find_element_by_id()方法来定位元素 #通过id定位 self.driver.find_element_by_id("hl").click() self.driver.find_eleme…
用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的元素缺少合适的 id 或name属性.XPath定位器可以用来绝对或相对定位缺少id或name属性的元素,也可以是用其他属性进行定位. 通过XPath定位的元素容易受html调整的影响,可以先通过id或name属性找到就近的元素,如父元素,用以加强测试脚本的稳定性.   例如,源文件如下: <htm…
文章写得很好,转载备用 一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Inspector:Appium自带的一个功能,只有mac下可以使用该功能   下面是用monitor抓取到的页面元素     下面使用Appium Inspector定位的元素   二.元素定位   1.格式:find_element_by_定位方式(value)   通过id定…
appium 使用findElementByAndroidUIAutomator 定位元素示例 import io.appium.java_client.remote.MobileCapabilityType; import io.appium.java_client.remote.MobilePlatform; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.se…
1. relative 和 absolute relative 会限制 absolute. absolute 会根据 父级的的定位元素来定位. 2. overflow 和 absolue 当overflow碰到 absolute的时候 overflow会失效 如果要overflow有效 必须使用relative 和 fixed.   3. relative 和 层级 z-index 当使用relative的时候 自身的层级并不能决定你 的层级位置 而是要看relative的层级 relative…
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍历list有三种方式:for循环,增强for循环(也就是常说的foreach循环),iterator遍历. 1.for循环遍历list for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")){ list.remove…
Android 上多方式定位元素(python) 在学习实际UI自动化测试的时候,首先就需要定位元素,然而定位元素也是最头疼的地方,因为元素各种控件名称的缺失会影响元素的准确定位.下面针对Android上点击tab的操作来尝试一下多种方式的元素定位方法.一个tab的组成可能是,一整个tab框,tab框中也可能包含ImageView或TextView,那么其实只要实现点击其中一种都可完成点击tab的操作了.例子项目中,tab可拆分成元素1(一整个tab框).元素2(ImageView)和元素3(T…
在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click  button    id=loginBtn  //表示点击id值为loginBtn的按钮元素 利用id和name来定位元素,前提是要求元素设置了id或name属性,并且是唯一的.但实际的web页面中,很多元素是没有id或name的,这时可通过html元素在页面中的路径来判断. 我们拿找人这个来比喻,利用id就好比通过身份证号(…
自动化测试中经常会出现无法定位元素的情况,报selenium.common.exceptions.NoSuchElementException错误 Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案: 如果iframe有name或id的话,直接使用switch_to_frame("name值"…
定位元素方法 官网地址:http://selenium-python.readthedocs.org/locating-elements.html        这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_e…
问题描述 UI页面功能测试中, 定位元素并输入(通过sendKey()方法输入), 显示输入失败. 根本原因 为了修复一个bug, 这个元素从input改成了textarea, 而textarea是有一个默认值的, 所以直接输入不成功. 解决方案 先调用clear()方法, 然后再调用sendKey()方法就可以了.…
一.通过内容的方式定位元素 使用Linktext和PartialLinkText定位元素的前提需要"文本"在“a”标签内,selenium才可以找到链接文本或者部分链接文本的元素. Linktext适用于超链接文本 PartialLinkText适用部分超链接文本 二.操作演示,使用Linktext定位a标签的超链接文本“新闻”(以百度网站为例) package basicweb; import org.openqa.selenium.By; import org.openqa.sel…
初衷 最近在编写Android App自动化用例,其中元素定位相对来说耗费的时间比较长.我们都知道Appium-desktop拥有自己的录制功能,我们就在想是不是可以把录制功能跟我司的自动化框架(ATK)打通,直接生成我们框架可以识别的自动化脚本,甚至可以产出java版的IDE.这样就可以节省大量的元素定位和脚本编写时间.所以最近通过debug分析Appium-desktop的源码,梳理了Appium-desktop定位/查找元素的原理. 由于appium-desktop使用react编写了大量…
1.前言 这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面,一个page存放对应的TestCase的页面元素,当页面变动的时候方便修改.还有一种就是存放在配置文件下,这样对于不懂得自动化测试的人员也可以配置.那么下面我看就来看一下如何存放到配置文件中?如何来读取并定位? 2.目录结构 测试地址:http://www.sogou.com 测试步骤:1.打开网址2.搜索框输入pyth…