点击页面链接测试

http://www.51testing.com/html/21/n-862721.html

需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回到原始页面。

  要完成这个需求就必须实现3点:

  1. 找到原始页面上面所有的在本窗口内跳转的链接

  2. 跳转到目标页面之后,“后退”到原始页面

  3. 在原始页面上继续点击后续的链接

  首先,要找到页面上的所有链接并不困难。selenium为我们提供了find_elements_by_tag_name方法。我们只需要在初始化webdriver之后,调用

  driver.find_elements_by_tag_name("a")

  就能找到页面上的所有a标签。

  我们可以对所有的a标签进行点击,但是这样的话我们不能保证所有的a标签所指向的目标页面都是站内的,有可能目标是其他的站外网页;另外这样也不能保证该跳转页面是在本窗口跳转而不是新开一个窗口。

  解决办法:

  使用selenium.webdriver.remote.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" in link.get_attribute("target") and ("google" in link.et_attribute("href") or not "http" in link.get_attribute("href")):
link.click()
driver.back()

selenium 点击页面链接测试的更多相关文章

  1. python selenium自动化点击页面链接测试

    python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...

  2. python selenium自动化(一)点击页面链接测试

    需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回到原始页面. 要完成这个需求就必须实现3点: 1. 找 ...

  3. ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容

    首先是主页面main.aspx <body style="background-color: #AFEEEE"> <form id="form1&quo ...

  4. selenium依次点击页面的删除按钮

    需要依次点击页面的删除按钮,如下图: @Test public static void FaBu() { TestMenuJump.jumpExam(driver); TestMenuJump.jum ...

  5. selenium webdriver(2)---页面对象定位

    webdriver的元素定位很灵活,提供了多种定位方式: Id LinkText PartialLinkText Name TagName Xpath ClassName CssSelector 这些 ...

  6. Xenu Link Sleuth 简单好用的链接测试工具 使用说明

    XenuLink Sleuth 名词介绍 “Xenu链接检测侦探”是被广泛使用的死链接检测工具.可以检测到网页中的普通链接.图片.框架.插件.背景.样式表.脚本和java程序中的链接. 那么神马时候出 ...

  7. selenium 结合 docker 构建分布式测试环境 (初学者视角)

    前言:随着自动化测试越学越深,深深觉得有太多的东西需要总结. 1.记录下学习中遇到的坑,当做学习笔记.2.有前人路过看到文章中比较落后的做法,请务必一定要指教.(因为是初学者视角,很多东西只是走通而已 ...

  8. Selenium WebDriver-通过页面标题切换窗口

    selenium webdriver可以通过获取页面标题,再跟据标题去切换浏览器窗口,代码如下: #encoding=utf-8 import unittest import time import ...

  9. Xenu Link Sleuth 简单好用的链接测试工具

    XenuLink Sleuth 名词介绍 “Xenu链接检测侦探”是被广泛使用的死链接检测工具.可以检测到网页中的普通链接.图片.框架.插件.背景.样式表.脚本和java程序中的链接. 那么神马时候出 ...

随机推荐

  1. oracle序列sequence

    序列 定义一个序列,自动产生连续的整数.也称序列生成器(sequence generator)产生序列号.在多用户环境下该序列生成器特别有用,可生成各返回序列号而不需要磁盘I/O或事务封锁.序列号为O ...

  2. rabbitmq 安装-单点

    centos6.5  rabbitmq搭建 环境:centos6.5 192.168.9.41   安装rabbitmq需要先安装erlang.rabbitmq3.6版本需要erlang R16B03 ...

  3. Loadrunner - Controller - policy - 设置集合点策略

    控制器中设置集合点策略                                                        我们在Virtual User Generator 中回放脚本无法 ...

  4. 【BZOJ1853/2393】[Scoi2010]幸运数字/Cirno的完美算数教室 DFS+容斥

    [BZOJ1853][Scoi2010]幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那 ...

  5. django url匹配过程

    ROOT_URLCONF root URLconf module urlpatterns “include” other URLconf modules chops off whatever part ...

  6. 我的Java开发学习之旅------>Java经典排序算法之二分插入排序

    一.折半插入排序(二分插入排序) 将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,即可得到折半插入排序算法.在处理A[i]时,A[0]--A[i-1]已经按关键码值排好序.所谓折半比较, ...

  7. 移动App该怎样保存用户password

    版权声明:本文为横云断岭原创文章,未经博主同意不得转载.微信公众号:横云断岭的专栏 https://blog.csdn.net/hengyunabc/article/details/34623957 ...

  8. 4.2 《锋利的jQuery》jQuery中的动画

    问题:queue()方法? tip0: jquery从1.9版本以上就不支持toggle()方法. // $("#panel h5.head").toggle(function() ...

  9. hihocoder #1152 Lucky Substrings 【字符串处理问题】strsub()函数+set集合去重

    #1152 : Lucky Substrings时间限制:10000ms单点时限:1000ms内存限制:256MB描述A string s is LUCKY if and only if the nu ...

  10. hdu1015 —— 回溯

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015 因为之前看了下刘汝佳的<算法入门经典>,就用类似打印全排列,八皇后的方法做.本以为不 ...