等待时做什么,为什么使用等待 在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等,这时候,我们就需要使用等待,来判断上一步操作是否完成,什么时候可以进行下一步操作. 1.强制等待 sleep(),单位是秒使用方法:sleep(X),等待X秒后,进行下一步操作.无论条件成立与否,都要等待到时间截至,才能进行下一步操作缺点:不能准确把握需要等待的时间(有时操作还未完成,等待就结束了,导致报错:有时操作已经完成了,但等待时间还没有到,…
一.窗口切换 使用方法: 1.获取到打开的所有的窗口,句柄handles all_handles = driver.window_handles print(all_handles) 2.获取当前的窗口 driver.current_window_handle print(driver.current_window_handle) 3.利用切换的语句,切换到想要操作的窗口(HTML页面) # 获取到的所有窗口为一个列表,用索引取值 driver.switch_to.window(all_hand…
下拉列表操作中分为两种:select.非select 1.非select的下拉框操作 非select下拉列表操作与网页元素操作一致,找到元素,定位元素,设置等待,点击元素等等 接下来操作百度的设置按钮,设置属于一个下拉框 举个栗子: from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expec…
前言 面试题:selenium 中隐藏元素如何定位?这个是很多面试官喜欢问的一个题,如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了 但是吧~~~很多面试官自己都搞不清楚啥叫定位,啥叫操作元素(如click,clear,send_keys) 隐藏元素 如下图有个输入框和一个登录的按钮,本来是显示的…
在使用selenium对页面进行相关操作时,有时候会遇到以下三种情况: 1.日期框:无法直接输入文本,必须要选择某一天的日期并点击才会填入文本框: 2.检索框:可以直接输入文本,但必须要点击根据输入的文本检索出来的下拉列表的某一项: 3.置灰的文本框:无法直接输入文本 按照常规套路,我们通常都会采取各种元素定位方法按照操作步骤一步一步来实现,但是遇到上面三种奇葩,页面定位操作就显得有些捉襟见肘了,因此我们可以通过selenium中的javascript操作来处理它. 我们以12306铁路官网的查…
1.在寻找元素时,加上显示等待或者隐式等待,这样在对元素进行操作之前保证元素被找到,进而提高成功率: 2.在对元素操作之前,比如click,如果该元素未display(非hidden),就需要先滚动到该元素,然后进行click操作;为啥使用滚动? 因为如果页面没有完全显示,element如果是在下拉之后才能显示出来,只能先滚动到该元素才能进行click,否则是不能click操作 3.不同方式进行定位,与expectedConditions判断方法封装,循环判断页面元素出现后再操作: 4.开发人员…
本来这些东西网上一搜一大堆,但是本着收集的精神,整理一份放着吧!哈!哈!哈! 1. 输入框(text field or textarea) WebElement element = driver.findElement(By.id("passwd-id")); element.sendKeys(“test”); element.clear(); element.getText(); 2. 下拉选择框(Select) Select select = new Select(driver.f…
常用操作 click 点击某个元素 driver.find_element_by_id(“su”).click()   clear driver.find_element_by_id(“kw”).clear()   send_keys 模拟键盘输入 driver.find_element_by_id(“kw”).send_keys(“hello”) from selenium.webdriver.common.keys import Keys driver.find_element_by_id(…
搜罗了一些查找元素的除标准语句外,另外的语句使用方法,摘自 开源中国 郝云鹏driver = webdriver.Chrome(); 打开测试页面 driver.get( "http://baidu.com" ); ---------------页面元素定位(页面元素)-------------- 通过ID进行定位 <div id="coolestWidgetEvah">...</div> #页面代码 ---> element = dr…
1.下拉框的修改操作 方法一:定位到元素后,通过select选择对应的值 方法二:通过两次点击的方法:没有select的value属性时,采用click两次的方法去选择: click第一次后,出现下拉框的内容,再click第二次进行选择,第2次click进行定位时,一级一级的定位 方法三:通过display显示属性的方法:禅道的提bug页面的所属模块 2.连贯操作(鼠标悬浮) 方法一:先定位到悬浮处——再定位到双击按钮处——再进行点击 方法二:定位到双击按钮进行点击 3.拖拽操作:比如拼图:从起…
package prictce; import java.io.File; import java.io.IOException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.We…
find_element_by_id()find_element_by_name()find_element_by_class_name()find_element_by_tag_name()find_element_by_link_text()find_element_by_partial_link_text()find_element_by_xpath()find_element_by_css_selector() from selenium.webdriver.common.by impo…
//高亮元素 WebElement  element = driver.findElement(By.cssSelector(".table1 .btn-public label")); JavascriptExecutor js =(JavascriptExecutor)driver; js.executeScript("arguments[0].setAttribute('style', 'background: yellow; border: 30px solid re…
上传操作分为两种情况: 1.input标签上传 如果是input可以直接输入路径的,那么直接调用send_keys输入路径,和前边的元素操作类似,在这里不再过多的赘述. 2.非input标签上传 非input标签上传的,则需要借助第三方的工具: 这里我们用python中的第三方库pywin32库,识别对话框句柄,进而进行上传操作 首先安装第三方库:pip install pywin32 借助winspy来辅助定位,winspy下载地址:https://sourceforge.net/projec…
我们在做UI自动化时,不得不会遇到一些窗口跳转与弹框,在这种的时候如果不进行切换的话,继续执行脚本必然会报错,所以我们就需要用到切换窗口的方法. selenium中主要是三种窗口 Windows窗口 iframe窗口 alert窗口 1.Windows窗口 这类窗口也就是我们常说的句柄,句柄的切换是有必要的,我们自己手动在网页上从操作的话,产生新的句柄时浏览器会自动的帮我们跳转到最新的句柄处,但是我们在做UI自动化的时候,代码并不会帮我们自动的切换到最新的句柄,需要我们使用代码去进行切换 fro…
前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况.这种情况下,需要用等待wait. 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait 一.固定等待(sleep) 导入time模块,设定固定的等待时间 缺点:在网络状态良好,元素可以加载出来的情况下,依然需要等待,会导致脚本允许时间延长.        二.隐式等待(implicitly_wait)        隐式等待是指页面元素在设定时间内全部加载完成,才能执行下一步.…
前言 面试题:selenium中隐藏元素如何定位?这个是很多面试官喜欢问的一个题,如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了 但是吧~~~很多面试官自己都搞不清楚啥叫定位,啥叫操作元素(如click,clear,send_keys) 隐藏元素 如下图有个输入框和一个登录的按钮,本来是显示的 元素的属性隐藏和显示,主要是 type="hidden"和style="display: none;"属性来控制的,接下来在元素属性里面让它隐…
webelement对象操作 webelement对象是selenium中所有元素的父类,也就是webelement对象拥有的方法,其它元素对象都会有: 只是不同的对象在调用特定方法时,效果是不一样的,即: 某些方法只是针对特定元素类型有效,而对其它类型无效. (1).clear:清空文本框中的文本,仅仅对有文本输入特性的元素有效:例如:文本框.多行文本框等: (2).click:单击元素,可以通过该方法,让元素获取焦点: (3).find_element系列:查找子元素的方法,同浏览器的fin…
工作中碰到一种情况就是,要定位的元素需要滚动条滑到下方后才可以显示出来. 这种情况下,就要先滑动滚动条,再定位元素. 那么滑动滚动条我以前记录了appium中的操作,那么,selenium中该如何操作呢? target=driver.find_element_by_css_selector("div.bg-w.van-row>div:nth-child(15) div.m-t-5.c-3")       ###红色部分就是我们要定位的目标元素.driver.execute_scr…
整理一下Array对象中针对元素操作的方法. 分别是: concat (组合数组) join(数组转字符串) pop(删除最后一个元素) shift(删除第一个元素) push(在数组尾部添加新元素) unshift(在数组头部添加新元素) slice (不改变数组本身,常用将类数组转换成数组,而后可以使用数组方法操作类数组) splice (指定位置.截取.替换) Array.prototype.concat(arr[, arr1, ......, arrN]) 描述 此方法返回一个由自身及所…
在自动化测试中,很多时候都会有等待页面某个元素出现后能进行下一步操作,或者列表中显示加载,直到加载完成后才进行下一步操作,但时间都不确定,如下图所示 幸运的是,在selenium 2后有一个模块expected_conditions,里面有很多函数可以完成这个工作,相关博客可见 http://www.cnblogs.com/nbkhic/p/4885041.html 但在selenium 1中或自己仅仅想写个简单用法该怎么处理那?解决如下: from selenium.common.except…
一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口. 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</title> <script type…
一.handle窗口切换 当点击某个元素后,会重新生成一个新的页签,但此时我们的操作仍然在原先的窗口当中,如果要在新的窗口继续操作元素,那么就要用到handle窗口切换的方法. 常用方法: window_handles:获取当前打开的所有窗口句柄,返回类型为一个列表. current_window_handle:获取当前窗口的句柄. switch_to.window(handle_path):切换窗口,handle_path参数代表的是一个窗口句柄. 当操作某个元素后需要等待新的元素出现,我们用…
js的滚动条scrollIntoView() Arguments[] - python与js之间的羁绊 1.移动到元素element对象的“底端”,与当前窗口的“底部”对齐: driver.execute_script("arguments[0].scrollIntoView(false);",element) 2.移动到元素element对象的”顶端“,与当前窗口的”顶部“对齐(默认true): driver.execute_script("arguments[0].scr…
1.鼠标操作导入类:ActionChains --鼠标的操作形成一连串的动作链,由selenium的ActionChains类来完成模拟鼠标操作手表操作的过程:1.鼠标的操作,先放到一个列表中2.利用perform()执行列表当中所有的操作鼠标中基本的操作有:点击(click).双击(double_click).右键(context_click).悬浮(move_to_element).拖拽(drag_and_drop).暂停(pause)等等. 举一个栗子: from selenium.web…
摘:http://blog.csdn.net/pf20050904/article/details/20052485 最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. private boolean isElementPresent(By by) {    try { driver.findElement(by);      return tru…
最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. private boolean isElementPresent(By by) {     try { driver.findElement(by);       return true;     } catch (NoSuchElementException e) {       return…
一.Selenium总共有八种定位方法  By.id()  通过id定位 By.name()  通过name 定位 By.xpath() 通过xpath定位 By.className() 通过className定位 By.cssSelector() 通过CSS 定位 By.linkText() 通过linkText By.tagName() 通过tagName By.partialLinkText() 通过匹到的部分linkText 目前,使用比较多的是cssSelector和xpath, cs…
selenium中的延时等待方式有三种:强制等待:sleep()  隐示等待:implicitly_wait()  显示等待 WebDriverWait() 1.强制等待:sleep(),time模块下的方法:只能够针对当前单步操作:缺点:无法很好的控制脚本的执行速度.并且只针对局部一步操作而言.如果每步需要添加则出现过多重复代码,且休眠时间如果超过5秒会出现浏览器回话链接断开: from time import sleep sleep(2) #传入等待时间 2.隐示等待:implicitly_…
1. 元素等待 我们在使用脚本的时候,可能会由于网络.服务器处理.电脑等原因,我们想要找的元素没有加载出来,这个时候如果直接定位就可能会报错. 这个时候我们就可以设置元素等待了. 什么叫元素等待呢? 就是WebDriver定位页面元素时如果没有找到,就会在指定时间内一直等待的过程. 元素等待一共分为两种类型:显示等待和隐式等待. 1.1 隐式等待 隐式等待是将所有定位元素的超时时间设置为同一个值. 在获取driver对象后,使用driver调用implicitly_wait方法即可. 实例: 在…