python + selenium 跳坑之旅 (第一弹)

哪怕你再精通selenium,陪伴测试人员最多的还是定位问题。


第一个坑:

    要定位的页面,出现html嵌套,也就是ifrmae。在html代码页面很直观的就能发现这个东西。实际就是在一个页面中引用了一个子页面。这样造成我们再用xpath或者css定位的时候直接找不到元素。这个时候我们需要用到一个新的东西来为她定位,其思路大体为:第一步,从父页面切换至子页面;第二步,在子页面定位元素;第三步,返回父页面(这个看个人需要,具体留在哪里需要结合实际)。

第一步的实现需要用到一个方法:switch_to_frmae。具体用法可以参考代码。在此,我必须提醒大家一句,switch_to_frmae不一定管用,因为版本问题,可能会需要变为switch_to.frmae。一个‘_’,一个‘.’,这个坑我爬了好久啊。

第二步就相对简单了,我们可以用firebug复制xpath或者css路径就可以了。值得注意的是,这次的路径是从子页面开始的,与父页面毫无关系,如果你想用id,class等等定位,应该也是可以的(当然我没试过,我对这句不负责)。

第三步,返回,当我们不需要在这个子页面中进行定位的时候需要退出,这要一个新的方法,

switch_to.default_content()。具体内容可以百度或者参照我的代码贴图。
    至此,第一个坑跳出。
    
    定位元素时,一定要注意element还是elements,一个单数,一个复数,意义真是差别太大了。当你find_element_by_id(‘p‘)只是一个id = ‘p’的元素,find_elements_by_id(‘p‘)的时候其实是一堆id = ‘p‘组成的列表。切记自己想要一个还是多个元素,切记切记。
    我贴的代码,是我测试账号密码登录qq邮箱时候的问题,这次问题不在代码,可能是因为网络或者其他什么原因的问题,当我定位到qq邮箱‘登录’按钮时候,click()一直出现‘服务器繁忙的字样’,开始我认为是点击太快,我设置time.sleep(3)后依然如此(隐形等待我没有试,不过有兴趣的同学可以试试),为了解决这个问题,无奈的我只能先click(),再time.sleep(3)后,再click(),居然奇迹般的成功了。
时间: 2024-10-08 04:44:39

python + selenium 跳坑之旅 (第一弹)的相关文章

python selenium 踩坑

想做做信息检索课设,先写个爬虫爬爬微博. 看了一下午微博的api,晚上决定用chromnium. 先通过pip安装selenium,官方文档看一眼, pip install selenium 然后需要安装浏览器的driver,浏览器的调试模式一样 通过Choco安装,powershell一句话 choco install selenium-all-drivers 完毕.然后开始写代码 1 from selenium import webdriver 2 from time import slee

Python学习第一弹——Python环境搭建

一.Python简介: Python,是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用

Python+Selenium笔记(九):操作警告和弹出框

#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一) 前言 开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息.报警信息.执行操作后的返回信息,甚至用来接收输入值等. (二) Alert类 Selenium WebDriver 通过Alert 类来操控 JavaScript 警告. (三) Alert功能及方法 功能/属性 简单

第一章 python+selenium自动化测试实战

@序章 自动化测试是软件测试的主流方向之一: 教程从测试的根本需求出发,讲解如何施展自动化测试. 首先,我们要明白,自动化仅仅是满足我们某种需求的一种工具:没有必要花费时间把它全部弄懂:我们只需要学会它的一些功能,然后让它为我们工作:仅此而已. python+selenium环境部署 官方地址:https://www.python.org/ 这是最新版本的安装包. python2.x的和python3.x的有极大区别,语法上有很多不同:但python3.x之间的差别是不大的:建议使用最新版本进行

豆瓣自动注册、回贴脚本 powered by Python & Selenium

前言,之前在豆瓣日志写了这片文章,结果被豆瓣删除了...哎 ----- 所删除内容 ----- <豆瓣自动注册.回贴脚本 powered by Python & Selenium> (2018-01-12 15:29) 故事起因: 上周的时候吧,发现有条疯狗在这张剧照(天生杀人狂)下面骂我.如果只是骂我傻逼我还能忍,毕竟人在江湖飘哪人不挨刀.但是你问候的范围大了,那作为一个社会主义核心价值观没有问题的青年,我必须得去操一下你妈了吧.请点击操他妈热线.结果这个怂逼居然还发私信骂我然后还把

python+selenium环境搭建步骤

一.自动化简介 1.自动化测试概念: 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程 2.自动化测试分类: 一般IT上所说的自动化测试是指功能自动化测试,通过编码的方式用一段程序来测试一个软件的功能,这样就可以重复执行程序来进行重复测试的目的.如果一个软件有小部分功能发生改变,只要修改一部分自动化测试代码,就可以重复对软件进行测试,从而提高测试效率. 3.什么样的项目适合做自动化测试: 一般情况下,只要满足如下三个情况就可以开展自动化测试 软件需求变更不频繁.项目周期

Python Selenium 文件上传(一)

昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可 <input id="file_name" class="text-1 w255" type="text" readonly="" value=

webpack入坑之旅(一)不是开始的开始

最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过任何的构建工具与模块化工具,所以本系列会十分的基础.并且可能有很多不正确的地方,希望大家谅解,并指出错误帮助改进.谢谢! 这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webp

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu