python 浏览器操作,python 控制网页
要求:现在有一个网站页面。希望通过python自动化测试,点击这个页面的所有链接跳转到这个窗口,而且是这个站点的链接。转到链接的页面后,我会通过后退回到原来的页面。
为了满足这一要求,必须认识到三点:
1.找到原始页面上跳转到该窗口的所有链接。
2.跳转到目标页面后,“返回”到原页面
3.继续点击原始页面上的后续链接。
首先,找到页面上的所有链接并不难。Selenium为我们提供了find_elements_by_tag_name方法。我们只需要初始化webdriver并调用
driver . find _ elements _ by _ tag _ name( a )
你可以在页面上找到所有的A标签。
我们可以点击所有的A标签,但这样就不能保证A标签所指向的目标页面都是站内的,有可能目标页面是其他的站外页面;另外,也不能保证跳转页面会在这个窗口跳转,而不是打开一个新窗口。
解决方案:
使用selenium . web driver . remote . web element . web element提供的get_attribute方法。
通过get_attribute获取A标签的各种属性,通过判断找到符合要求的元素进行点击。
Get_attribute(href )获取与A标记对应的目标页面的URL。通过判断网址,可以知道该页面是否是站内页面。我们知道,如果是站内页面,这个属性一般会是一个相对路径,或者包含这个站点的域名,但是如果是站外页面,就必须是一个包含“http”的url。
Get_attribute(target )如果目标不是 _blank ,则可以判断页面跳转到了这个窗口。
跳转到下一页后如何返回原页面?
Selenium webdriver提供了一个back方法来轻松实现这个目标:driver.back()
最后,返回原页面后,需要继续点击下一个链接进行测试。不用说,您必须使用for循环来实现这一点:
对于范围(0,len(driver . find _ elements _ by _ tag _ name( a ))中的I:
在python中,如果我们指定I在范围(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的方法:
对于driver . find _ elements _ by _ tag _ name( a )中的targetLink:
这个方法也可以遍历所有A标签集中的所有元素。
如果使用第二种方法,我们认为这一要求可以简单地实现如下:
links=driver . find _ elements _ by _ tag _ name( a )
对于链接中的链接:
如果link.get_attribute(target )中不是 _blank ,link.et_attribute(href )中不是 google ,或者link.get_attribute(href )中不是 http :
link.click()
driver.back()
但是这样的实现会在运行时抛出一个异常:
selenium . common . exceptions . staleelementreferenceexception:Message:u“在缓存中找不到元素-可能在查找后页面已经更改”
异常的解释很明显:在缓存中找不到元素,找到元素后页面发生了变化。这意味着当当前页面跳转时,缓存中关于该页面的元素也被清空。
因此,我们需要在每次返回原页面的时候搜索我们感兴趣的A标签元素,同时还要继续点击上一次点击的元素。所以我们使用第一种遍历方法来实现这个for循环:
length=len(driver . find _ elements _ by _ tag _ name( a )
对于范围内的I(0,长度):
links=driver . find _ elements _ by _ tag _ name( a )
link=links[i]
如果不是(link.get_attribute(target )中的 blank 或link.get_attribute(href )中的 http ):
link.click()
driver.back()
这样每次返回页面后,页面上的axdfn都会被搜索一遍,然后用缓存中的I继续点击下一个跳转链接。
Python selenium自动化了点击页面链接测试。
Python selenium自动点击页面链接测试要求:现在有一个网站页面。我想用python自动化测试点击这个页面上的所有链接跳转到这个窗口,而且都是这个站点里的链接。转到链接的页面后,我会通过后面返回。
Selenium点击页面链接进行测试。
单击页面链接来测试http://www.51testing.com/html/21/n-862721.html需求:现在有一个网站页面,我想使用python自动化测试来单击该窗口中的所有页面。
PythonplusSelenium自动化实现示例——获取页面元素信息(百度主页)
# coding=utf-8 from selenium import web driver driver=web driver。chrome()driver . get( http://www . ba.
pythonplusSelenium自动化软件测试lpar第10章rpar:测试驱动的TDD
测试驱动开发模式要求开发人员在编写业务代码时首先编写测试代码,同时单元测试实例决定如何编写产品代码,并持续成功地执行所有编写的单元测试实例,不断改进单元测试实例以完善产品代码,这样随着.
pythonplus硒自动登录dnf11十一周年活动界面领取奖励,登录部分坑矿总结lbrack1rsqb
背景:Dnf周年庆活动之一,游戏可在6月22日06:00-6月23日06:00期间登录后,于6月25日16:00-7月4日06:00期间领取。目标是连续四天自动运行脚本,并自动收集它。
pythonplusSelenium自动化软件测试(第2章):WebDriver API
2.1操作要素基本方法介绍环境在前面已经设置好了。从本文开始,我们将正式学习selenium的webdriver框架。我们通常谈论selenium automation,但事实上,它并不像QTP那样是一个GUI界面。
Python selenium自动化(II)注册过程的自动化
需求:使用python selenium自动测试一个网站的注册过程。假设这个网站的注册过程分为三步,需要提供更多的信息:在这个过程中,用户需要填写信息。从下拉菜单中选择。选择收音机。
PythonplusSelenium使用Page对象实现自动页面测试。
页面模式是Selenium中的一个测试设计模式。它主要是把每个页面设计成一个类,包含页面中要测试的元素(按钮、输入框、标题等。),以便可以在Selenium测试页面中访问它。
pythonplusSelenium自动化软件测试(第一章):环境搭建,也可以直接用Anaconda!
1.1设置环境1 . 1 . 1 Selenium简介Selenium是测试Web应用程序用户界面(UI)的常用框架。它是运行端到端功能测试的强大工具。您可以用多种编程语言编写测试。
随机推荐
火神测试记录
我觉得这个游戏很棒,是六个里面最喜欢的.有时候挖坑需要很多位置?2.感觉很难,特别是打到三级是个考验(但从另一个方面来说也是优势?) 3.我到现在也不太了解怪物吃金的原理。
基于WS-BPEL 2 period;基于0的服务组合研究
3358tech.it168.com/soadocument/2008-01-03/200801031332376.shtmlws-BPEL是一个组合Web服务的规范。它的前身是IB.
快速标签应用程序
zcnav-Master https://github.com/zcsoft/ZCTabNav层次分明,非常适合快速导入。
活动学习总结
Activiti界面元素的使用摘要1。平面设计中元素的运用。SequenceFlow:连接线,可以连接两个任务来管理流程实例的流向-general-id:流程的id,以及流程。
[转载] eclipse调试arm裸机程序
一、集成开发环境软件部分:eclipse、GDB服务器、Jlink软硬件部分:Jlink硬件准备1:从SD/NOR Flash开始并格式化nand flash准备2:
我如何能坚持
Node.js服务器端JavaScript,单进程。怎么学?好像学不到什么深入的东西。纠结到你睡觉。
Qt标识操作系统的宏
qt文件中windows的宏是q _ ws _ win32/*窗口系统,必须是:(q _ ws _ x) macx-macosx之一.
SVM的双重形式
对偶svm对偶SVM线性SVM可以通过二次规划法求解xn,通过非线性变换将其转化为zn SVM。通过非线性特征变换,大幅度降低了模型复杂度,并且通过特征变换得到了曲线边缘。
【SSH2(理论加;练习)] -一步一步冬眠(一)
之前的博客讨论过SSH2,框架Struts,代表层、集成和封装,以WebWork为核心处理,以依赖映射为处理核心。使用时,需要Struts.xml来配置相应的动作和拦截器。
【机器学习算法-python实现】KNN-k最近邻算法的实现(附源代码)
,400],[200,5],[100,77],[40,300]] shape: display (rows,columns)示例:shape (group)=(4,2)zeros:列出一个格式相同的空矩阵,例如:zeros(group).
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。