20171013学习笔记Selenium 2 第四章WebDriver API 4.6获得验证消息 4.7设置元素等待

4.6获得验证消息
在执行用例时,得到的结果需要和预期结果比较,从而判断用户的通过或失败。自动化用例执行完后,还要从页面获取信息来证明用例执行是否成功。
通常用的最多的验证信息分别是:title,url,text。


#coding=utf-8
from selenium import webdriver
import time

url= "http://bbs.u.360.cn"

driver=webdriver.Firefox()
driver.get(url)

#打印当前页面的title
title =driver.title
print (title)

#打印当前页面的URL
now_url=driver.current_url
print (now_url)

#执行登陆
driver.find_element_by_link_text( "登录" ).click()
driver.find_element_by_css_selector( ".quc-input.quc-input-account" ).send_keys(username)
driver.find_element_by_css_selector( ".quc-input.quc-input-password" ).send_keys(password)
driver.find_element_by_css_selector( '.quc-submit.quc-button.quc-button-sign-in' ).click()
driver.f
time.sleep( 5 )

print ( '登录后' )
#再次打印当前页面URL
now_url=driver.current_url
print (now_url)

#获得登录的用户名
user=driver.find_element_by_id( 'zh_username' ).text
print (user)

driver.quit()

4.7设置元素等待
由于很多web应用程序使用AJAX技术,在浏览器加载时,页面元素不是同时加载完成的。
所以定位元素时,设置元素等待来改善不稳定性。
webdriver提供了两种等待形式,显示等待和隐式等待。
4.7.1显示等待
显示等待使webdriver在等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常。
#coding=utf-8

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url= "http://bbs.u.360.cn"
driver=webdriver.Firefox()
driver.get(url)

element=WebDriverWait(driver, 5 , 0.5 ).until(
EC.presence_of_element_located((By.ID, "key-words" ))

)
element.send_keys( 'selenium' )
#driver.quit()

WebDriverWait类是由WibDriver提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在。超出设置时间检测不到就抛出异常。具体格式:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_excptions=None)
说明: driver:浏览器驱动。 timeout:最长超时时间。poll_frequency:检查的时间间隔,默认为0.5s。 ignored_exceptions:超时后的异常信息,默认情况下抛出NoSuchElementException异常。

WebDriverWait()一般由unit()和unit_not()配合使用
unit(method,message="")调用该方法提供的驱动程序作为一个参数,知道返回值为true。
unit_not(method,message="")调用该方法提供的驱动程序作为一个参数,知道返回值为false。


还可以使用is_displayed()来判断元素是否存在。
#coding=utf-8

from selenium import webdriver
from time import sleep,ctime

url= "http://bbs.u.360.cn"
driver=webdriver.Firefox()
driver.get(url)

print (ctime())
for i in range ( 10 ):
try :
el =driver.find_element_by_css_selector( "kw22" )
if el.is_displayed():
break
except : pass
sleep( 1 )
else :
print ( "time out" )
driver.close()
print (ctime())


4.7.2隐式等待
webdriver提供了implicitly_wait()方法来实现隐式等待,默认设置为0。

#coding=utf-8

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from time import ctime

url= "http://bbs.u.360.cn"
driver=webdriver.Firefox()

#设置隐式等待为10秒
driver.implicitly_wait( 10 )
driver.get(url)

try :
print (ctime())
driver.find_element_by_id( "kw23" ).send_keys( "selenium" )
except NoSuchElementException as e:
print (e)
finally :
print (ctime())
driver.quit()



4.7.3sleep休眠方法
sleep()方法有Python的time模块提供。有时我们希望当脚本执行到某一位置时,要做固定的时间休眠,可以使用sleep方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值