断言页面标题:

介绍一个Selenium中页面title断言方法,这个在基础篇中第一个完整的脚本有提到过,这个补充一下。

相关脚本代码如下:

# coding=utf-8

import time

from selenium import webdriver

driver = webdriver.Chrome

driver.maximize_window

driver.get('https://www.baidu.com')

time.sleep(1)

#方法一

try:

assert u"百度一下" in driver.title

print ('Assertion test pass.')

except Exception as e:

print ('Assertion test fail.', format(e))

#方法二

if u"百度一下,你就知道" == driver.title :

print ('Assertion test pass.')

else:

print ('Assertion test fail.')

print driver.title

方法一,是利用python中Assert方法,采用包含判断,方法二是通过if方法,采用完全相等方法,建议选择第一种方法。


<span style="font-family:Microsoft YaHei;font-size:18px;">u"百度一下,你就知道"</span>

这u代表unicode的意思,由于我们这里采用了python 2,如果你使用pyn3就不需要,在Python3中,字符串默认采用unicode存储。

接下来介绍如何通过Selenium方法来获取某一个元素的text属性值。在很多自动化测试脚本中,需要多次获取元素的text值,拿过来进行对比和匹配。例如,在一个登陆界面,如果不输入用户名和密码,直接点击登录,肯定会有相关错误提醒。这个错误,我们需要通过selenium抓取出来,和需求说明文档中的描述去进行匹配,如果匹配,测试成功,否则失败。

这里用百度登录举例:

需要通过Selenium脚本去自动判断是否显示错误文字“请您填写手机/邮箱/用户名”

相关脚本代码如下:

# coding=utf-8

import time

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox

driver.maximize_window

driver.implicitly_wait(6)

driver.get("http://www.baidu.com/")

time.sleep(1)

driver.find_element_by_xpath("//*[@id='u1']/a[7]").click

time.sleep(1)

driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__submit']").click

#断言方法一

try :

error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error' and text='请您填写手机/邮箱/用户名']").is_displayed

print ("Test pass. the error message is display.")

except Exception as e:

print ("Test fail.", format(e))

#断言方法二,本文重点介绍方法

error_mes = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error']").text

try:

assert error_mes == u'请您填写手机/邮箱/用户名'

print ('Test pass.')

except Exception as e:

print ("Test fail.", format(e))

总结:

要获取到目标元素的text的值,需要定义一个目标元素element,然后通过element.text方法得到字符串,注意不是element.text,这个方法是没有带小括号的。上面介绍了两个方法,方法一是,直接把字段写入XPath表达式,如果通过该XPath能定位到元素,说明这个错误字段已经在页面显示;方法二是通过该目标元素节点,然后通过element.text得到值,在拿得到的text值取和期待的结果去字符串匹配。建议在自动化测试脚本开发中,采用第二个方法。