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

来源:互联网 发布:php 数组变字符串 编辑:程序博客网 时间:2024/05/21 18:32
4.6获得验证消息
在执行用例时,得到的结果需要和预期结果比较,从而判断用户的通过或失败。自动化用例执行完后,还要从页面获取信息来证明用例执行是否成功。
通常用的最多的验证信息分别是:title,url,text。


#coding=utf-8
fromselenium importwebdriver
importtime

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

fromselenium importwebdriver
fromselenium.webdriver.common.byimportBy
fromselenium.webdriver.support.uiimportWebDriverWait
fromselenium.webdriver.supportimportexpected_conditionsasEC

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

fromselenium importwebdriver
fromtime importsleep,ctime

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

print(ctime())
fori inrange(10):
try:
el =driver.find_element_by_css_selector("kw22")
ifel.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

fromselenium importwebdriver
fromselenium.common.exceptionsimportNoSuchElementException
fromtime importctime

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")
exceptNoSuchElementExceptionase:
print(e)
finally:
print(ctime())
driver.quit()



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

阅读全文
0 0
原创粉丝点击