selenium之 浏览器导航栏的三个按钮(back、forward、refresh)
来源:互联网 发布:mysql分割字符 编辑:程序博客网 时间:2024/06/05 06:13
更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解
今天这几个方法非常简单,就是我们能看到的浏览器导航栏的三个按钮:后退、前进、刷新
driver.back()
driver.forward()
driver.refresh()
不多说,上代码试试
# -*- coding: utf-8 -*-from selenium import webdriverfrom time import sleepdriver = webdriver.Firefox()driver.maximize_window()driver.get('http://www.baidu.com')print 'base_url: ', driver.current_urldriver.find_element_by_id('kw').send_keys(u'selenium 灰蓝')driver.find_element_by_id('su').click()sleep(2)print 'after search: ', driver.current_urldriver.back() # backprint 'back to: ', driver.current_urldriver.forward() # forwardprint 'forward to: ', driver.current_urlsleep(2)driver.refresh() # refreshprint 'refresh: ', driver.current_urlsleep(2)driver.quit()
结果:
明显能够看到浏览器的后退、前进与刷新的动作。
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=selenium%20%E7%81%B0%E8%93%9D&rsv_pq=f88ee279000319b4&rsv_t=3537ECuJsvn8biOOxAemTJhRgJA9fRB%2FgYyaBy3sdcQagRhU5jOqEDICoQI&rqlang=cn&rsv_enter=0&rsv_sug3=11&inputT=266&rsv_sug4=266https://www.baidu.com/https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=selenium%20%E7%81%B0%E8%93%9D&rsv_pq=f88ee279000319b4&rsv_t=3537ECuJsvn8biOOxAemTJhRgJA9fRB%2FgYyaBy3sdcQagRhU5jOqEDICoQI&rqlang=cn&rsv_enter=0&rsv_sug3=11&inputT=266&rsv_sug4=266https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=selenium%20%E7%81%B0%E8%93%9D&rsv_pq=f88ee279000319b4&rsv_t=3537ECuJsvn8biOOxAemTJhRgJA9fRB%2FgYyaBy3sdcQagRhU5jOqEDICoQI&rqlang=cn&rsv_enter=0&rsv_sug3=11&inputT=266&rsv_sug4=266
那么什么时候会用呢?
一种情况就是,当你从一个父页面跳转到子页面进行操作,操作完之后没有“返回”之类的按钮或链接,重新进入父页面又很麻烦,back()可以帮你。forward()与此类似,相对没有back()那么常用。
当你修改了页面信息但是没有即时刷新时,可以手动refresh()。
不过需要注意:
当你前进并退回原来的页面或刷新页面之后,页面的元素id是改变了的。不要妄图用原来定位好的WebElement去操作现在的页面元素!否则会出现如下报错:
selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked up
代码示例下:
# -*- coding: utf-8 -*-from selenium import webdriverdriver = webdriver.Firefox()driver.maximize_window()driver.get('http://www.baidu.com')kw = driver.find_element_by_id('kw')print kw # 原页面元素IDdriver.refresh()print driver.find_element_by_id('kw') # 刷新之后的kw元素IDkw.send_keys('csdn') # 再用原来的元素ID去操作就会抛出异常driver.quit()
来看看输出结果:
<selenium.webdriver.remote.webelement.WebElement (session="19a16be7-f885-4454-aa44-065b35d8377f", element="{307bfd7c-bcb8-4bed-a0f0-164924e9f648}")><selenium.webdriver.remote.webelement.WebElement (session="19a16be7-f885-4454-aa44-065b35d8377f", element="{8eac4fb5-4c8f-4141-b9d5-2ced9b412388}")>Traceback (most recent call last): File "D:/Code/py files/zhigou/zhigou_framework/test/UI_test/case/testnavigation.py", line 16, in <module> kw.send_keys('csdn') # 再用原来的元素ID去操作就会抛出异常 File "C:\APP\Python2.7.10\lib\site-packages\selenium\webdriver\remote\webelement.py", line 334, in send_keys self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) File "C:\APP\Python2.7.10\lib\site-packages\selenium\webdriver\remote\webelement.py", line 469, in _execute return self._parent.execute(command, params) File "C:\APP\Python2.7.10\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute self.error_handler.check_response(response) File "C:\APP\Python2.7.10\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response raise exception_class(message, screen, stacktrace)selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked upStacktrace: at fxdriver.cache.getElementAt (resource://fxdriver/modules/web-element-cache.js:9407) at Utils.getElementAt (file:///c:/users/zx/appdata/local/temp/tmpsorvob/extensions/fxdriver@googlecode.com/components/command-processor.js:8992) at fxdriver.preconditions.visible (file:///c:/users/zx/appdata/local/temp/tmpsorvob/extensions/fxdriver@googlecode.com/components/command-processor.js:10043) at DelayedCommand.prototype.checkPreconditions_ (file:///c:/users/zx/appdata/local/temp/tmpsorvob/extensions/fxdriver@googlecode.com/components/command-processor.js:12597) at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/zx/appdata/local/temp/tmpsorvob/extensions/fxdriver@googlecode.com/components/command-processor.js:12614) at DelayedCommand.prototype.executeInternal_ (file:///c:/users/zx/appdata/local/temp/tmpsorvob/extensions/fxdriver@googlecode.com/components/command-processor.js:12619) at DelayedCommand.prototype.execute/< (file:///c:/users/zx/appdata/local/temp/tmpsorvob/extensions/fxdriver@googlecode.com/components/command-processor.js:12561)
能看到两次输出的WebElement是完全不同的,还用原来的元素去操作当然是不行的:
所以在有可能有页面刷新的时候,不要用这种获取到元素,然后一直操作这个元素的写法;要在刷新之后重新获取一下元素进行操作。
最后插个小广告,如果你想自学,你可以看一些博客和书籍;如果你希望在学习过程中有更多的交流,你可以加入QQ群(219873826)跟一些学习selenium的朋友交流学习,共同进步;如果你对自己的自学能力和自控能力没有信心,我也可以推荐你一些千元价位的python+selenium课程(如龙腾测试)
- selenium之 浏览器导航栏的三个按钮(back、forward、refresh)
- selenium之 浏览器导航栏的三个按钮(back、forward、refresh)
- 将导航栏的二级菜单的back按钮替换
- iOS开发笔记:导航栏里的"Back"按钮显示不出来
- 修改导航栏上返回按钮上的字,例如把back修改为返回
- iOS 修改导航栏上返回按钮上的文字,例如把 back 修改为 返回
- 使用js,Jquery 禁用浏览器的back 和 next 按钮:
- 自定义返回按钮的侧滑返回滑动时导航栏出现三个横排的小蓝点
- 导航栏之自定义按钮
- IntelliJ IDEA 13的back/forward
- iO设置导航栏back
- python+selenium 自动化之启动浏览器加载浏览器的插件
- iOS隐藏导航栏返回上一界面的back
- 重写dialog的back按钮
- Android 4.0 隐藏虚拟导航按钮(Back,Home等)
- SystemUI导航键显示隐藏某个按钮(Recent Home Back)
- iOS 7 navigation bar custom back button without title ===自定义导航栏返回按钮
- iOS 7 navigation bar custom back button without title ===自定义导航栏返回按钮
- Android中带签到功能的日历(积分)
- Java集合总结
- C/C++ 学习笔记:字符串、数组相关
- Docker学习笔记(一)基本原理及概念
- C语言基础学习基本数据类型-其他整数类型
- selenium之 浏览器导航栏的三个按钮(back、forward、refresh)
- Class.forName().newInstance()与new
- 报错:ViewPager$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
- struts2.5+hibernate5.2整合
- python WSGL的使用
- backtop debug
- 配置mysql数据库的主从关系
- SVM原理、公式推导、libsvm源码分析
- Spring Boot 第二节 利用Controller响应JSP