Selenium(二十):expected_conditions判断页面元素

1. 判断元素(expected_conditons)

作为一个刚刚转到python开发的小朋友,在开发前只将前辈们封装的方法看了一遍,学了一边selenium基础。看到封装的方法有什么判断元素是否存在、判断元素是否可见,而在基础知识中根本不存在,一脸懵逼。

直到写爬虫案例的时候,突然发现了selenium下的一个模块吸引了我,因为我在其他开发中根本没有碰到这个模块,所以我就去了解了一下,然后就有了这篇博客。

selenium的expected_conditions模块一般也简称EC,收集了一系列的场景判断方法。

expected_condtions提供了16种判断页面元素的方法。

我们就用百度首页来进行演示吧(想不到什么网页)。

前面代码都一样,所以我就写在前面了。

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

base_url = "http://www.baidu.com"
driver = webdriver.Firefox()
driver.implicitly_wait(5)
# 隐式等待和显示等待都存在时,超时时间取二者中较大的
driver.get(base_url)

title_is():判断当前页面的title是否完全等于预期字符串,返回布尔值

demo = WebDriverWait(driver,10).until(EC.title_is(u"百度一下,你就知道"))
print("判断title,返回布尔值:",demo)

结果:

title_contains():判断当前页面的title是否包含预期字符串,返回布尔值

demo = WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))
print("判断title,返回布尔值:",demo)

结果:

presence_of_element_located():判断某个元素是否被加到dom树下,不代表该元素一定可见

demo = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,‘kw‘)))
‘‘‘判断某个元素是否被加到了dom树里,并不代表该元素一定可见,如果定位到就返回WebElement‘‘‘
print(demo)

结果:

visibility_of_element_located():判断某个元素是否可见,可见代表元素非隐藏,并且元素的宽和高都不为0

demo = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,‘su‘)))
‘‘‘判断某个元素是否被添加到了dom里并且可见,可见代表元素可显示且宽和高都大于0‘‘‘
print(demo)

结果:

visibility_of():判断元素是否可见,如果可见就返回这个元素

demo = WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value=‘kw‘)))
‘‘‘判断元素是否可见,如果可见就返回这个元素‘‘‘
print(demo)

结果:

presence_of_all_elements_located():判断是否至少一个元素存在于dom树中,举个例子,如果页面上有n个元素的class都是‘coumn-md-3‘,name只要有一个元素存在,这个方法就返回True

demo = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,‘.mnav‘)))
‘‘‘判断是否至少有1个元素存在于dom树中,如果定位到就返回列表‘‘‘
print(demo)

结果:

text_to_be_present_in_element_value():判断某个元素中的value属性值是否包含了预期字符串

demo = WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,‘#su‘),u‘百度一下‘))
‘‘‘判断指定元素的属性值中是否包含了预期的字符串,返回布尔值‘‘‘
print(demo)

结果:

text_to_be_present_in_element():判断某个元素中的text文本是否包含预期字符串

demo = WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id=‘u1‘]/a[8]"),u‘设置‘))
‘‘‘判断指定的元素中是否包含了预期的字符串,返回布尔值‘‘‘
print(demo)

结果:

frame_to_be_availabe_and_switch_to_it():判断该frame是否可以switch进去,如果可以,则返回True并且switch进去,否则返回False (没找到例子)

invisibility_of_element_located():判断某个元素是否不存在于dom树或不可见

demo = WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,‘#swfEveryCookieWrap‘)))
‘‘‘判断某个元素在是否存在于dom或不可见,如果可见返回False,不可见返回这个元素‘‘‘
#注意#swfEveryCookieWrap在此页面中是一个隐藏的元素
print(demo)

结果:

element_to_be_clickable():判断某个元素是见并且是enable(有效)的,这样的话才叫clickable

demo = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id=‘u1‘]/a[8]"))).click()
‘‘‘判断某个元素中是否可见并且是enable的,代表可点击‘‘‘
print(demo)

结果:

staleness_of():等某个元素从dom树下移除,返回True或False(没找到例子)

element_to_be_selected:判断某个元素是否被选中,一般用于select下拉表(没找到例子)

element_selection_state_to_be:判断某个元素的选中状态是否符合预期(没找到例子)

element_located_selection_state_to_be:跟上面的方法一样,只是上面的方法传入定位到的element,这个方法传入locator(没找到例子)

alert_is_present:判断页面上是会否存在alert(没找到例子)

原文地址:https://www.cnblogs.com/liuhui0308/p/12080397.html

时间: 2024-10-23 12:37:20

Selenium(二十):expected_conditions判断页面元素的相关文章

selenium—用NoSuchElementException异常判断页面元素是否存在

一.知识补充 1.find_element的一种使用方法: find_element(by=方法,value=值) 例如: find_element(by="id",value="query") 2.selenium.common.exceptions模块 from selenium.common.exceptions import NoSuchElementException 使用WebDriver实施自动化过程中抛出的所有异常都是用selenium.common

expected_conditions判断页面元素

expected_condtions提供了16种判断页面元素的方法: 1.title_is:判断当前页面的title是否完全等于预期字符串,返回布尔值 2.title_contains:判断当前页面的title是否包含预期字符串,返回布尔值 3.presence_of_element_located:判断某个元素是否被加到dom树下,不代表该元素一定可见 4.visibility_of_element_located:判断某个元素是否可见,可见代表元素非隐藏,并且元素的宽和高都不为0 5.vis

jQuery 判断页面元素是否存在

在传统的Javascript里,当我们对某个页面元素进行某种操作前,最好先判断这个元素是否存在.原因是对一个不存在的元素进行操作是不允许的. 例如: document.getElementById("someID").innerHTML("hi"); 如果ID为"someID"的元素不存在,我们将得到Javascript运行错误:document.getElementById("someID") is null 正确的写法应该

全栈JavaScript之路( 二十五 )访问元素的样式

任何支持style 特性的元素在 ,在其DOM  节点 对象中都有一个 style 属性与之对应. 这个style 对象是 CSSStyleDeclaration类型的实例,包含着html style特性的所有样式信息.但不包含 外部样式或者 内嵌样式层叠而来的样式. 在style特性中,提定的任何css属性,都将表现为这个style 对象的属性.对于使用短划线的的属性名,必须转化为驼峰大小写形式,多数情况下都可以这样转换. 也有例外, float 是javascript 关键字,不能直接转换,

jQuery基础 -- 如何判断页面元素存在与否

在传统的Javascript里,当我们对某个页面元素进行某种操作前,最好先判断这个元素是否存在.原因是对一个不存在的元素进行操作是不允许的.例如: document.getElementById("someID").innerText("hi"); 如果ID为"someID"的元素不存在,我们将得到Javascript运行错误:document.getElementById("someID") is null 正确的写法应该是

Python3.x:Selenium中的webdriver进行页面元素定位

Python3.x:Selenium中的webdriver进行页面元素定位 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link text xpath css selector 对应于webdriver中的定位一个元素方法分别是: driver.find_e

判断页面元素是否进入可视区域

近日要做一个页面功能,需要检测某个页面元素是否位于当前屏幕中的可视区域,首先想到的当然是获取offsetLeft和offsetTop,将这个值分别与body.scrollTop/scrollLeft进行比较,得出元素是否可视. 这次查资料时偶然看到了getBoundingClientRect():该方法获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,他返回的是一个对象,即Object,该对象有是个属性:top,left,right,bottom:这里的top.left和css中的理解

Python+Selenium 自动化实现实例-获取页面元素信息(百度首页)

#coding=utf-8from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://www.baidu.com") # 获得输入框尺寸size = driver.find_element_by_id("kw").sizeprint size #返回百度页面底部备案信息 text = driver.find_element_by_id("cp").text

selenium采用find_element_by方法识别页面元素

主要是练习获取页面中的各元素,马克 1 # coding:utf-8 2 import time 3 from selenium import webdriver 4 import unittest 5 from pythontest.commlib.baselib import * 6 7 #引用封装后的日志系统 8 log = TestLog().getlog() 9 class BaiBu(unittest.TestCase): 10 u'''[百度.类]''' 11 def setUp(