python⾃动点击⽹页上按钮_pythonselenium⾃动化(⼀)点
击页⾯链接测试
需求:现在有⼀个⽹站的页⾯,我希望⽤python⾃动化的测试点击这个页⾯上所有的在本窗⼝跳转,并且是本站内的链接,前往到链接页⾯之后在通过后退返回到原始页⾯。
要完成这个需求就必须实现3点:
1. 到原始页⾯上⾯所有的在本窗⼝内跳转的链接
2. 跳转到⽬标页⾯之后,“后退”到原始页⾯
3. 在原始页⾯上继续点击后续的链接
⾸先,要到页⾯上的所有链接并不困难。selenium为我们提供了find_elements_by_tag_name⽅法。我们只需要在初始化webdriver之后,调⽤
driver.find_elements_by_tag_name("a")
就能到页⾯上的所有a标签。
我们可以对所有的a标签进⾏点击,但是这样的话我们不能保证所有的a标签所指向的⽬标页⾯都是站内的,有可能⽬标是其他的站外⽹页;另外这样也不能保证该跳转页⾯是在本窗⼝跳转⽽不是新开⼀个窗⼝。
解决办法:
使⽤webelement.WebElement提供的get_attribute⽅法。
通过get_attribute拿到该a标签的各种属性,通过判断到符合要求的元素进⾏点击。
get_attribute("href") 得到a标签对应的⽬标页⾯的URL,对URL进⾏判断就可以了解到该页⾯是否站内页⾯。我们可以知道,如果是站内页⾯的话这个属性⼀般会是⼀个相对路径,或者包含了本站域名,但如果是站外页⾯的话,那它⼀定是包含了“http”的⼀个url。
get_attribute("target")如果target不是"_blank"的话,可以判断该页⾯是在本窗⼝跳转的。
跳转到下⼀页⾯后如何返回原始页⾯呢?
selenium webdriver 提供了back⽅法可以轻松的达到这个⽬标:driver.back()
最后,需要在返回了原始页⾯之后继续点击下⼀个链接进⾏测试,这个不⽤说肯定要使⽤for loop:
for i in range(0, len(driver.find_elements_by_tag_name("a"))):
在python中,如果我们指定i在range(0, x)中循环时,会以1为步长来遍历从0到(x-1)的序列。例如:range(0,5)会得到[0, 1, 2, 3, 4]。当我们想更改range的步长时,则需要为range⽅法提供第三个参数。例如:range(0,5,2),则会以2为步长,得到[0,2,4]这个序列。
另外,我们也可以使⽤类似C#中foreach的⽅法:
for targetLink in driver.find_elements_by_tag_name("a"):
这种⽅法同样可以遍历所有的a标签集合中的所有元素。
如果使⽤第⼆种⽅法,我们觉得这个需求可以简单的实现为:
links = driver.find_elements_by_tag_name("a")
for link in links:
if not "_blank" _attribute("target") and ("google" _attribute("href") or not "http" _attribute("href")):
link.click()
driver.back()
但是这样的实现在运⾏时会抛出异常:
异常的说明已经很明显了:在cache中不到元素,在元素被到之后页⾯变换了。 这就说明,当当前页⾯发⽣跳转之后,存在cache中的关于这个页⾯的元素也被清空了。
因此,我们需要在每次回到原始页⾯之后对我们感兴趣的a标签元素重新搜索,同时我们⼜必须接着上次的点击到的元素继续点击。因此我们使⽤第⼀种遍历的⽅法来实现这个for loop:
length = len(driver.find_elements_by_tag_name("a")
for i in range(0,length):
links = driver.find_elements_by_tag_name("a")
link = links[i]
if not ("_blank" _attribute("target") or "http" _attribute("href")):
link.click()
driver.back()
这样,在每次返回页⾯之后会重新搜索⼀遍页⾯上的a元素,然后使⽤cache中的i继续点击下⼀个跳转链接。
python selenium⾃动化点击页⾯链接测试
python selenium⾃动化点击页⾯链接测试 需求:现在有⼀个⽹站的页⾯,我希望⽤python⾃动化的测试点击这个页⾯上所有的在本窗⼝跳转,并且是本站内的链接,前往到链接页⾯之后在通过后退返回 ...
selenium 点击页⾯链接测试
Python+Selenium ⾃动化实现实例-获取页⾯元素信息(百度⾸页)
#coding=utf-8from selenium import webdriverdriver = webdriver.Chrome()("www.ba ...
python+selenium⾃动化软件测试(第10章):测试驱动TDD
测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例⼦决定了如何来写产品的代码,并且不断的成功的执⾏编写的所有的单元测试例⼦,不断的完善单元测试例⼦进⽽完善产品代码, 这样随着 ...
python+selenium⾃动化登录dnf11周年活动界⾯领取奖励登录部分采坑总结[1]
背景: Dnf的周年庆活动之⼀,游戏在6⽉22⽇ 06:00~6⽉23⽇ 06:00之间登陆过游戏后可以于6⽉25⽇ 16:00~7⽉04⽇ 06:00领取奖励⽬标:连续四天⾃动运⾏脚本,⾃动领取所 ...
python+selenium⾃动化软件测试(第2章):WebDriver API
2.1 操作元素基本⽅法 前⾔前⾯已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium⾃动化,其实它并不是类似于QTP之类的有GUI界⾯的可 ...
python selenium⾃动化(⼆)⾃动化注册流程
需求:使⽤python selenium来⾃动测试⼀个⽹站注册的流程. 假设这个⽹站的注册流程分为三步,需要提供⽐较多的信息: 在这个流程⾥⾯,需要⽤户填⼊信息.在下拉菜单中选择.选择单选的radio ...
Python+Selenium使⽤Page Object实现页⾯⾃动化测试
Page Object模式是Selenium中的⼀种测试设计模式,主要是将每⼀个页⾯设计为⼀个Class,其中包含页⾯中需要测试的元素(按钮,输⼊框,标题 等),这样在Selenium测试页⾯中可以通 ...
python+selenium⾃动化软件测试(第1章):环境搭建,你也可以直接⽤Anaconda!
1.1 环境搭建 1.1.1 selenium简介Selenium 是⽤于测试 Web 应⽤程序⽤户界⾯ (UI) 的常⽤框架.它是⼀款⽤于运⾏端到端功能测试的超强⼯具.您可以使⽤多个编程语⾔编写测试 ...
随机推荐
vulcan测试记录
感觉这个游戏很赞,是六个⾥⾯最喜欢的⼀个了 1.有时候挖坑对于位置要求⽐较⼤? 2.感觉难度⽐较⼤,尤其是玩到第三关很考验啊(不过从另⼀个⽅⾯来说也是优点?) 3.玩到现在对于怪物吃⾦⼦的原理没有很懂 ...
基于WS-BPEL2.0的服务组合研究
快速tab应⽤
activiti学习总结
Activiti界⾯元素的使⽤总结 ⼀.图形设计中元素的使⽤ 1.SequenceFlow:连接线,可以连接两个任务,来管理流程实例的流向 -----General -----id:流程的id,⽤与程 ...
【转载】eclipse调试arm裸机程序
⼀.集成开发环境 软件部分:eclipse , GDB Server , Jlink软件 硬件部分:Jlink硬件 准备⼯作1:从SD/NOR Flash启动,格式化nand flash 准备⼯作2: ...
第⼆百⼀⼗天 how can I 坚持
Node.js 服务器端JavaScript,单进程. 该如何学习啊,貌似学什么都学不深⼊. 纠结死了. 睡觉.
qt⾥标识操作系统的宏
qt⽂件⾥的 windows的宏是Q_WS_WIN32/*  The window system, must be one of: (Q_WS_x) MACX 
  - Mac OS X      ...
SVM对偶形式
dual svm 对偶SVM linear SVM 可以⽤⼆次规划⽅法解 xn通过⾮线性转换变成zn SVM配合⾮线性特征转换 透过large-margin降低模型复杂度 透过特征转换得到弯弯曲曲的边 ...
【SSH2(理论+实践)】--Hibernate步步(⼀个)
前⼏个博客讨论SSH2该框架Struts,它代表层,集成封装.和使⽤WebWork作为核⼼处理,依赖映射是它的处理核⼼.在使⽤时需要l 配置相应Action和Interceptor够完 ...
【机器学习算法-python实现】KNN-k近邻算法的实现(附源代码)
,400],[200,5],[100,77],[40,300]]) shape:显⽰(⾏,列)例:shape(group)=(4,2) zeros:列出⼀个同样格式的空矩阵,例:zeros(group ...
javascript登录注册界面

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。