在操作过程中主要遇到两种阻塞的问题,总结如下: 1.页面中有iframe,定位元素时,需要用switch_to.frame()转换到元素所在的frame上再去定位 2.遇到一种新情况,有些按钮在html上没有被赋予herf链接,而是由javascript控制跳转到新的页面,这种情况下点击按钮之后浏览器上打开一个新页面,但是浏览器的句柄handle仍然会停留在原页面(浏览器显示的句柄在新页面,所以不容易发现这个问题),而不是新弹出的页面上,所以要定位新页面的元素,必须先将句柄转移到新弹出的页面上,…
     在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException),一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案: 如果i…
首先要确定弹窗的类型: (1)div弹窗 (2)新标签页弹窗 (3)alert弹窗 一,div弹窗div弹窗是浏览器中比较好定位的弹窗,定位的方法与普通的元素一样.不过这里会有一个坑,明明可以找到这个按钮,但是就是定位不到.这个就是因为当前有div弹窗弹出的时候,需要设置一下等待时间,等页面元素加载完毕,再去做其他操作.这里用百度登陆为例子: from selenium import webdriver import time def login_baidu(url,username,passw…
Python3 Selenium定位不到元素常见原因及解决办法 一.问题描述 在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况: 报错信息: no such element: Unable to locate element: {"method":"xpath","selector":"xpath"} 二.分析以及解决方案 1,原因一以及解决方案 (1)原因: Frame/Iframe原…
selenium定位不到元素时,网上大部分查到都是iFrame的切换问题,然后是多窗口.句柄的处理问题, 在初学是遇到定位不到元素,一直在找上面的问题,发现都不是上面的问题, 后来才发现是页面刷新的问题,页面刷新后,元素就失效了,需要重新定位元素,哪怕看到元素刷新前后并没有变化,可是它确实失效了 解决办法: 检测获取不到元素抛出的异常StaleElementReferenceException,如果获取到该异常,则重新再定位一次元素即可 重新定位后,解决了一直定位不到元素的问题…
Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_element_by_name() eg: find_element_by_name("wd") 3. find_element_by_class_name() eg: find_element_by_class_name("bg s_btn") 4. find_ele…
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的浏览器,支持windows\linux\macos等各种平台. Selenium 脚本是用多种受支持的编程语言中的一种编写的 —— 目前可用的有 Java.Ruby 和 Python 驱动程序.这些脚本在浏览器之外的一个单独的进程中运行.驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的 bro…
   在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException),一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案: 如果ifr…
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的浏览器,支持windows\linux\macos等各种平台. Selenium 脚本是用多种受支持的编程语言中的一种编写的 —— 目前可用的有 Java.Ruby 和 Python 驱动程序.这些脚本在浏览器之外的一个单独的进程中运行.驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的 bro…
转载:https://www.cnblogs.com/tarrying/p/9681991.html tarrying selenium的三种等待时间 //隐式等待(20秒以内没哥一段时间就会去找元素,如果没找大也不会报错,过了20s才会报错) //driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); //显示等待 WebDriverWait wait = new WebDriverWait(driver,10); wa…
selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name定位元素:find_element_by_name("name_vaule") 通过tag_name定位元素:find_element_by_tag_name("tag_name_vaule") 通过class_name定位元素:find_element_by_clas…
Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法. 单个对象的定位方法 多个对象的定位方法 层级定位 定位单个元素在定位单个元素时,selenium-webdriver 提示了如下一些方法对元素进行定位.下面这些定位方式中,优先使用id.name.classname,对于网上的链接元素,推荐使用linkText 定位方式,对于不好定位的元素,考虑使用火狐的插件去辅助定位(xpath). By.className(className)) //对于元素的属性包含cla…
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 2.Xpath描述错误原因: 这种情况有可能是: 1.xpath语法规则书写错误,这个木有办法,补下xpath的语法,多写写,练练就…
在自动化测试中,如果无法定位到一个元素,那么最大的可能是定位的元素是在iframe框架中,iframe对象代表一个HTML的内联框架,在HTML中,iframe每出现一次,一个iframe对象就会被创建. 定位iframe框架,首先需要进入到iframe框架,再定位iframe框架的元素,定位iframe的方式分2种,一种是以ID的方式,一种是索引的方式 以ID的方式定位时代码如下: 进入到iframe中,定位元素 browser.switch_to.frame('ID') browser.fi…
主要讲自己在实战中遇到的坑: 1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化.用ID去找元素,每次刷新页面ID都会发生变化. 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素. 2.iframe原因定位不到元素 分析原因:你要找的元素在某个框架(frame)里面 解决方案:跳转到该框架里,再查找元素. driver.switchTo().frame("login_frame"); driver.switchTo().frame(drive…
1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化.用ID去找元素,每次刷新页面ID都会发生变化. 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素. 2.iframe原因定位不到元素 分析原因:你要找的元素在某个框架(frame)里面 解决方案:跳转到该框架里,再查找元素. driver.switchTo().frame("login_frame"); driver.switchTo().frame(driver.findElement(B…
女友由于工作上的失误,将公司RDM中的某一字段的2000条数据给删除了.....就算是重新添加字段,但是与其他数据的关联性已经不在了.由于每天的数据修改量大,有关部门不愿意恢复数据库,因此只能一条条的手动添加啦.我看了下添加流程,估计了修改一条信息至少需要30s,那么2000条数据所需要的时间.....数据还在不停的变动,每天上班还有其他事情.身为程序猿的我,只好拿出自动化终极工具Selenium来拯救她了! 一. 元素定位问题 一些基本的元素定位方法,官方文档上面已经有详细的说明了.这里就不啰…
定位隐藏要素的原理:页面主要通过“display:none”来控制元素不可见.所以我们需要通过javaScript修改display的值得值为display="block,来实现元素定位的. HTML代码: <header id="header"> <a href="#" class="logo"><strong id="Title" style="display: none&…
在给公司同事给培训了WEB自动化框架,现在和大家分享交流下…
一个元素定位可能会在多个地方用到,用loc变量接收元素的定位方式和相对路径.使用时再拆包(*loc) loc = (定位方式,'定位方式对应的元素路径')    =>元素定位方式及路径 driver.find_element(*loc).事件    => 查找元素并进行事件操作 from selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.ge…
刚接触Selenium,在调试过程中发现有些元素定位不到,于是求助了百度,查找到的资料是这么说的:如果需要定位的元素在某个frame里,则单独通过id/name/xpath是定位不到此元素的.比如,原本想通过WebElement element=driver.FindElement(By.LinkText("XXX"));来定位元素的,但由于该元素在iframe. id="left_frame"这个frame里面,所以需要先定位frame,WebElement el…
from  selenium  import  webdriver#引入ActionChains类from  selenium.webdriver.common.action_chains  importAction  Chainsdriver=webdriver.Firefox()....#定位元素的源位置element=driver.find_element_by_name("xxx")#定位元素要移动到的目标位置target= driver.find_element_by_nam…
测试过程中,偶尔会碰到一些页面的隐藏元素,如下,是小编举的一个简单的例子: test.html <html> <head></head> <body> <select style="display:none;"> <option value="volvo">Volvo</option> <option value="saab">Saab</opt…
一. selenium截图1.selenium提供了几个截取全屏的方法- get_screenshot_as_file(self, filename) --这个方法是获取当前window的截图,出现IOError时候返回False,截图成功返回True. filename参数是保存文件的路径. > driver.get_screenshot_as_file('/Screenshots/foo.png')- get_screenshot_as_base64(self) --这个方法也是获取屏幕截图…
元素在网页上,却会出现定位不到的情况的分析. 1. 定位不正确. 2. 页面还没有加载完就去查找元素了. 3. 有遮罩层. 首先说下第3点. 先前在公司遇到过这样的问题. 页面是显示出来了, 这个元素也是display状态,但是却无法定位到. 发现是因为页面加载后的loading遮罩层并没有消失. 应该是可以通过WebElementWait方法等到遮罩层消失,再去执行点击输入操作.…
转自:http://www.cnblogs.com/yufeihlf/p/5717291.html 父子定位元素 查找有父亲元素的标签名为span,它的所有标签名叫input的子元素 find_element_by_css_selector("span>input") 标签名[属性=’属性值‘]:指的是该input标签下name属性为wd的元素 find_element_by_css_selector("input[name='wd']") 多个属性组合定位元…
selenium等待特定元素加载完毕 is_disappeared = WebDriverWait(driver, 8, 0.5, ignored_exceptions=TimeoutException).until(lambda x: x.find_element_by_id("id").is_displayed())…
1.定位方式 1.id driver.find_element_by_id('username').send_keys('byhy') 2.name driver.find_element_by_name('username').send_keys('byhy') 3.class_name driver.find_element_by_class_name('form-control').send_keys('byhy') 4.tag_name driver.find_elements_by_t…
由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdriver driver=webdriver.Firefox() driver.get(r'http://www.baidu.com/') print 'driver attributes:' print dir(driver) elem=driver.find_element_by_id('kw') pr…