selenium学习笔记(智能等待)
博主在尝试对百度首页用selenium完成自动登录的功能
反复多次尝试元素定位方法也未写错、最后发现问题原因:
脚本运行速度快于页面加载速度
如百度首页登录例子、脚本已经开始寻找登录弹窗
但是页面仍在加载、导致程序报错
博主就整理下智能等待的方法
首先是显示等待:即等待页面某个元素出现、超时则抛出错误
#!/usr/bin/env python
# -*- coding: utf_8 -*- from learn_webdriver import Webdriver
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep browser_chrome = webdriver.Chrome(Webdriver.chrome())
browser_chrome.get("http://www.baidu.com") browser_chrome.find_element_by_css_selector("html body div#wrapper div#head div.head_wrapper div#u1 a.lb").click()
# 定位百度首页中登录按钮元素
WebDriverWait(browser_chrome, 10).until(lambda the_driver:
browser_chrome.find_element_by_class_name("tang-foreground").is_displayed())
browser_chrome.find_element_by_class_name("tang-foreground").find_element_by_name("userName").send_keys(u"baidu用户名")
# 定位到登录窗口后再定位到用户名输入框
browser_chrome.find_element_by_name("password").send_keys(u"baidu密码")
sleep(2)
print browser_chrome.title
browser_chrome.quit()
这里主要是使用 WebDriverWait() 类构建方法、直到找到登录弹窗元素为止
下面是隐形等待:即设置等待时间、等待页面完成新的操作后、若超时则抛出错误
#!/usr/bin/env python
# -*- coding: utf_8 -*- from learn_webdriver import Webdriver
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep browser_chrome = webdriver.Chrome(Webdriver.chrome())
browser_chrome.get("http://www.baidu.com") browser_chrome.find_element_by_css_selector("html body div#wrapper div#head div.head_wrapper div#u1 a.lb").click()
# 定位百度首页中登录按钮元素
browser_chrome.implicitly_wait(30)
# 添加智能等待时间
div_user = browser_chrome.find_element_by_class_name("tang-foreground").find_element_by_name("userName")
div_user.send_keys(u"baidu用户名")
div_pass = browser_chrome.find_element_by_name("password").send_keys(u"baidu密码")
sleep(2)
print browser_chrome.title
browser_chrome.quit()
implicitly方法智能设置等待时间30S、超时则抛出异常
selenium学习笔记(智能等待)的更多相关文章
- Selenium 学习笔记(一)
selenium 学习整理 初学者,如果有不当得地方请指出,非常感谢. 准备事项: 1. Python 安装包 安装Python,并勾选添加环境变量. 安装完成后,打开dos窗口,输入python,看 ...
- python + selenium 学习笔记 -摘要
一.浏览器操作相关 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() # 窗口最大 ...
- selenium学习笔记(HTMLTestRunner测试报告)
之前提到selenium加入unittest框架.可以引入HTMLTestRunner扩展.以此来生成测试报告 首先是分享下载的百度云地址 http://pan.baidu.com/s/1pKUItW ...
- selenium学习笔记(加入unittest)
利用firefox浏览器的selenium IDE可以直接生成webdriver+unittest的python脚本 当然博主是要为了自己编写脚本.对用例内容进行了修改,把元素校验功能也放入了用例中 ...
- selenium 学习笔记 ---新手学习记录(1) 问题总结
说明:每次学习各种语言时,环境搭建访问国外网址最头疼了,现在只要是工具下载好放到自己网盘,可以随时用. 1.首先工具准备,selenium需要用到的 下载地址 访问密码 ff8f 2.我选择的语言时j ...
- selenium学习笔记(selenium IDE下载安装)
今天自己一直在瞎捣鼓 最后这里整理下 selenium IDE 这个录制工具的下载安装 首先这个工具只支持火狐浏览器firefox.使用火狐浏览器进入selenium官网: http://www.se ...
- selenium学习笔记(简单的元素定位)
收拾一下心情开始新的一周工作 继续是selenium的学习.配置成功后 由于所有操作都是建立在页面元素基础上的.所以下来就是学习定位元素 首先是基础的定位.就使用博客园首页搜索框为例: 下面是代码: ...
- selenium学习笔记(selenium下载安装)
博主自己捣鼓的接口框架先到这里 等工作上正式开始使用再后续完善需求 还是继续学习python.学编程就直接动手写 就想看看python+selenium的组合 什么都不多说.先下载安装 博主这里已经安 ...
- Web自动化测试Selenium 学习笔记(一)
1.Web自动化测试简介自动化基础:自动化用例编写.Selenium优势及原理.自动化环境搭建Selenium基础:常见8大元素定位(表格).常见元素处理.下拉框元素处理.不同窗口切换.元素进阶.元素 ...
随机推荐
- luarocks错误 require ‘luasql.mysql' 报module 'luasql.mysql' not found:
错误: require 'luasql.mysql'stdin:1: module 'luasql.mysql' not found: no field package.preload['luasql ...
- Java中native关键字使用
native是与C++异构开发的时候用的.java自己开发不会使用
- appium入门基础知识
1.概念区分: 1)IOS-UIAutomation:随着iOS4.0的发布,苹果公司同时发布了一个名为UIAutomation的测试框架,它可以用来在真实设备和iPhone模拟器上执行自动化测试 学 ...
- 这些Python骚操作,你知道吗?
0x00 世界,你好 程序员第一次接触语言或者框架,基本上都有个 Hello World 的例子,这里 Python 直接将它做成了一个包. 0x01 Python 哲学 Python 执行 i ...
- 异常处理、socke基于TCP协议编程
一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if #语法错误示范二 de ...
- 【Oracle】OGG数据初始化之RMAN
实验环境: 源端.目标端: DataBase:10.2.0.1.0 OS:OEL5.6 OGG:fbo_ggs_Linux_x86_ora11g_32bit 源端使用rman进行备份全库: RMAN& ...
- jsp创建cookie
<jsp:include flush="true" page="header.jsp" /> <script type="text/ ...
- python16_day04【编码、函数、装饰器、包】
一.编码总结 """python2 文件存储默认是ascii方式,启动加#coding:utf8就是文件以utf8方式打开.否则就是以ascii.变量则是str. 例子: ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数
Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数 //字符串分割: Split var reg: TPerlRegEx; List: TStrings; ...
- LeetCode:N叉树的层次遍历【429】
LeetCode:N叉树的层次遍历[429] 题目描述 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2, ...