获取某个元素的text属性值,与预期值进行对比和匹配。
练习场景:在百度登录界面,不输入账号和密码的情况下,点击登录,出现提示“请您填写手机/邮箱/用户名”,抓取该描述与需求文档描述进行对比,如果匹配,测试通过,反之失败。
具体代码:
# coding=utf-8 import time from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("http://www.baidu.com/") time.sleep(1) driver.find_element_by_xpath("//*[@id='u1']/a[8]").click() time.sleep(1) driver.find_element_by_xpath("//*[@title='用户名登录']").click() time.sleep(1) driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_10__submit']").click() time.sleep(1) # 断言方法一 try: error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_10__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_10__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值取和期待的结果去匹配。建议在自动化测试脚本开发中采用第二种方法。
参考文章:https://blog.csdn.net/u011541946/article/details/69945381