主要方便以后用到时查阅,侵删!
三种等待方法:
1.强制等待sleep(xx)
强制等待,不管你浏览器是否加载完了,程序都得等待,时间一到,继续执行下面的代码,作为调试很有用,有时候也可以在代码里这样等待,不过不建议总用这种等待方式,太死板,严重影响程序执行速度。

2.隐性等待implicitly_wait(xx)
隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。有些时候我们不需要等到所有元素加载完成,我想等我要的元素出来之后就立马执行下一步,那就应该用显性等待。

3.显性等待WebDriverWait(driver,timeout,xx),配合该类的until()和until_not()方法
程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。

判断条件:expected_conditions
导入模块:selenium.webdriver.support.expected_conditions

#coding=utf-8
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
#设置浏览器
driver = webdriver.Firefox()
url = "https://www.baidu.com"
timeout = 20
driver.implicitly_wait(10)   #隐式等待和显示等待都存在时,超时时间取二者中较大的
driver.get(url)
#强制等待:强制等3秒再执行下一步
#sleep(3)#隐性等待:隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步
#隐性等待对整个driver的周期都起作用,所以只要设置一次即可
#driver.implicitly_wait(30)#显性等待:WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。
#它主要的意思就是:程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
#until方法:当某元素出现或什么条件成立则继续执行
#until_not方法:当某元素消失或什么条件不成立则继续执行#expected_conditions:selenium的一个模块,其中包含一系列可用于判断的条件:
#以下两个条件类验证title,验证传入的参数title是否等于或包含于driver.title
#title_is
#title_contains#以下两个条件验证元素是否出现,传入的参数都是元组类型的locator,如(By.ID, ‘kw’)
#顾名思义,一个只要一个符合条件的元素加载出来就通过;另一个必须所有符合条件的元素都加载出来才行
#presence_of_element_located
#presence_of_all_elements_located#以下两个条件判断某段文本是否出现在某元素中,一个判断元素的text,一个判断元素的value
#text_to_be_present_in_element
#text_to_be_present_in_element_value#以下条件判断frame是否可切入,可传入locator元组或者直接传入定位方式:id、name、index或WebElement
#frame_to_be_available_and_switch_to_it#以下条件判断是否有alert出现
#alert_is_present#以下条件判断元素是否可点击,传入locator
#element_to_be_clickable#以下四个条件判断元素是否被选中,第一个条件传入WebElement对象,第二个传入locator元组
#第三个传入WebElement对象以及状态,相等返回True,否则返回False
#第四个传入locator以及状态,相等返回True,否则返回False
#element_to_be_selected
#element_located_to_be_selected
#element_selection_state_to_be
#element_located_selection_state_to_be#最后一个条件判断一个元素是否仍在DOM中,传入WebElement对象,可以判断页面是否刷新了
#staleness_oflocator = (By.LINK_TEXT,"设置")
try:print(WebDriverWait(driver,timeout).until(EC.title_is(u"百度一下,你就知道")))print(WebDriverWait(driver,timeout).until(EC.title_contains(u"知道")))WebDriverWait(driver,timeout).until(EC.presence_of_element_located(locator))WebDriverWait(driver,timeout).until(EC.visibility_of_element_located((By.ID,'su')))WebDriverWait(driver,timeout).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id='u1']/a[8]"),u"设置"))WebDriverWait(driver,timeout).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,'#su'),u'百度一下'))WebDriverWait(driver,timeout).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'#swfEveryCookieWrap')))WebDriverWait(driver,timeout).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='u1']/a[8]"))).click()#WebDriverWait(driver,timeout).until(EC.element_to_be_selected(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]")))'''instance = WebDriverWait(driver,timeout).until(EC.alert_is_present())print(instance.text())instance.accept()''''''判断某个页面上是否存在alert,如果有alert则返回alert内容,并通过'''print(driver.find_element_by_link_text("设置").get_attribute('href'))# 打印当前页面titleprint(driver.title)# 打印当前页面URLprint(driver.current_url)
finally:#关闭当前页面driver.close()
#退出浏览器
#driver.quit()

selenium web自动化判断页面元素加载完毕相关推荐

  1. selenium之如何等待页面元素加载完成

    webdriver中我们用两种方式进行等待:明确的等待和隐性的等待. 明确的等待 明确的等待是指在代码进行下一步操作之前等待某一个条件的发生.最不好的情况是使用Thread.sleep()去设置一段确 ...

  2. Selenium Web 自动化 - 如何找到元素

    Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp ...

  3. 如何判断C# webbrower页面是否加载完毕方法

    如何判断C# webbrower页面是否加载完毕方法 ? | 浏览:116 | 更新:2014-08-21 14:48 webbrower里面,每次打开一个页面,里面有多个iframe,那么navig ...

  4. python 爬虫+selenium 全自动化下载JS动态加载漫画

    ** python 爬虫+selenium 全自动化下载JS动态加载漫画 最近刚学的python,代码可能并不规范,希望大家见谅! 爬取之前,我们首先需要做一些准备工作,因为很多网站都有反爬检索,为了 ...

  5. html 判断页面加载完成,Javascript判断页面是否加载完成

    很多时候我们在使用document.getElementById的时候直接在script标签中获取对象,然后使用,此时程序会出现该对象为undefined. var dom=document.getE ...

  6. JavaScript 判断 DOM 何时加载完毕

    处理HTML DOM文档存在一个难题是,JavaScript可以在DOM完全加载之前执行,这会给你的代码引发不少的潜在问题.浏览器的渲染和操作顺序大致如下列表: HTML解析完毕 外部脚本和样式表加载 ...

  7. js 判断iframe是否加载完毕

    js 判断iframe是否加载完毕 CreationTime--2018年9月13日15点30分 Author:Marydon 1.javascript实现 window.onload = funct ...

  8. 【转】JS判断SWF,JPG加载完毕、兼容(Activex,plugIn)所有浏览器

    JS判断SWF,JPG加载完毕.兼容(Activex,plugIn)所有浏览器 这里主要说下监听SWF的加载. 网上流传已久的监听方法,只能在IE(Activex插件下)下实现.在使用plugin的浏 ...

  9. jQuery:等页面DOM加载完毕后再执行代码

    等着页面DOM加载完毕后再执行代码 第一种方式(比较麻烦,不常用): $(document).ready(function(){ - }) 第二种方式(常用): $(function(){ - }) ...

最新文章

  1. Rocksdb DeleteRange实现原理
  2. Android 获取apk签名的fingerprint
  3. 一九四六年首台电子计算机,2012年计算机一级MsOffice第四十九套练习题及答案解析...
  4. uva111346Probability
  5. 常用数据结构及复杂度
  6. Python rfind()方法
  7. 一款非常好用的音乐标签及管理工具:Yate for Mac
  8. JAVA面试要点010---重入锁_ReentrantLock 详解
  9. java逻辑判断_阿里JAVA开发强制要求的10条条件控制及逻辑判断的规范,切记
  10. linux网卡参数配置方法,Linux网卡参数配置方法教程
  11. maven内存不足:Unexpected error occurred: Not enough memory to allocate buffers for rehashing Java heap
  12. yb3防爆电机型号含义_温州出租大型发电机定做-智慧动力机械设备租赁
  13. 数学知识——博弈论(巴什博奕、尼姆博奕、威佐夫博奕)思路及例题
  14. OpenCV入门(八)——形态学技术
  15. ESP32编译速度慢问题
  16. 红帽子企业Linux 5安装序列号
  17. 4.1 c++左值和右值、类型转换
  18. 我的博客 http://aofengblog.blog.163.com/
  19. MVC设计模式 吉软
  20. 使用钉钉Api 向企业群发送文件 python

热门文章

  1. 浅谈一个新人的大数据之路-HiveQLSpark-SQL中谓词下推
  2. 天刀服务器在线人数统计,天刀手游各大区活跃人数统计 神刀削弱后不降反增!...
  3. Bandizip便携版右键菜单注册
  4. 学生计算机培训照片,四川新华电脑学校三维项目实训室参观照片
  5. PMP新考纲 敏捷题目 (五)
  6. Python实现将一张图片切成9宫格
  7. 分段概率密度矩估计_2017年考研《数学一》大纲
  8. 服务器2颗cpu的性能,DIY从入门到放弃:两颗CPU性能更强吗?
  9. 编程语言与冯诺伊曼体系结构
  10. 2019年6款最佳的wordpress主机推荐(优缺点分析)