赞
踩
我的githup 代码获取https://github.com/brw123/TDD-note
待办事项应用的功能测试编写
用讲故事的方法编写功能测试
from selenium import webdriver import unittest from selenium.webdriver.common.keys import Keys import time class NewVisitorTest(unittest.TestCase): def setUp(self): self.browser = webdriver.Firefox() def tearDown(self): self.browser.quit() def test_can_start_a_list_and_retrieve_it_later(self): #小花听说有一个待办事项的网站很好 #她去看了这个应用的首页 self.browser.get("http://localhost:8000") #她注意到这个首页的标题和头部包含“To-Do” self.assertIn("To-Do",self.browser.title) header_text=self.browser.find_element_by_tag_name('h1').text self.assertIn( 'To-Do' ,header_text ) #应用邀请她输入一个待办事项 inputbox= self.browser.find_element_by_id("id_new_item) self.assertEqual( inputbox.get_attribute('placeholder'), 'End to_do item' ) #她在文本框输入了"Buy woolen yarn " (购买毛线)她喜欢织毛衣 inputbox.send_keys('Buy woolen yarn') #她按了回车键,页面更新了 inputbox.send_keys(Keys.ENTER) time.sleep(1) # 待办事项中显示“1:Buy woolen yarn” table = self.browser.find_element_by_id('id_list_table') rows = self.brwser.find_element_by_tag_name('tr') self.assertTrue( any(row.text == '1:Buy woolen yarn' for row in rows) ) #页面中又显示了一个文本框,可以输入其他待办事项 #她输入了"Knit a sweater with wool”(使用毛线织毛衣) #页面再次跟新,他的清单中显示了这两个待办事项 #[..] if __name__=='__main__': unittest.main()
代码解读:
我就不自己解释这些方法怎么用了
以下解释来自代码中的注释,我用词典翻译了一下,心得体会一些方法去看别人如何解释不如先去底层源码看看
selenium查找网页内容的方法
find_element_by_tag_name(self,name)
根据标记名在该元素的子元素中查找元素。
Args: - name - html标签的名称(例如:h1, a, span):
返回:- WebElement -
Args: -名称- html标签的名称(例如:h1, a, span)
返回:- WebElement -如果找到元素,则返回:- WebElement
:引发:- NoSuchElementException -如果没有找到元素
:用法:element = element.find_element_by_tag_name(‘h1’)
find_elements_by_tag_name(self,name) 注意带了s
根据标记名在该元素的子元素中查找元素列表。
Args:-名称- html标签的名称(例如:h1, a, span)
:返回:-列表的WebElement -一个列表与元素,如果发现任何元素。一个
如果不是空列表
:用法:elements = element.find_elements_by_tag_name(‘h1’)
find_element_by_id(self,id_)
“通过id查找元素。”
参数:- id_ -待查找元素的id。
返回:- WebElement -如果找到了元素
引发:- NoSuchElementException -如果没有找到元素
:使用方法:
元素= driver.find_element_by_id(“foo”)”"根据id查找元素。
send_keys
模拟输入元素。
:Args: - value -用于输入或设置表单字段的字符串。设置文件输入,这可以是一个本地文件路径。
使用它发送简单的键事件或填写表单字段::
form_textfield = driver.find_element_by_name(用户名)
form_textfield.send_keys(“admin”)
这也可以用来设置文件输入。
::
file_input = driver.find_element_by_name(“profilePic”)
file_input.send_keys(“路径/ / profilepic.gif”)
通常最好将文件路径包装在其中一个方法中
#在操作系统。返回支持跨OS测试的实际路径。
#file_input.send_keys(os.path.abspath(“路径/ / profilepic.gif”))
Keys
Kes类 获取按键
**any(*args, kwargs)函数
Return True if bool(x) is True for any x in the iterable.
如果迭代器为空,则返回False
代码运行结果:很显然没有找到h1
修改功能让他通过:
结果:
继续修改
:
运行结果,没有找到占位符 Enter a to-do item
修改添加占位符属性
结果 没有发现表格id :
修改添加表格:
测试结果:这里他没有找到输入的内容,自动提示了他自带的错误消息,提示错误这个错误消息不够明确,修改一下
自定义一个错误消息
运行:显示了自己定义的一个错误消息
这个错误是因为我们测试输入的内容无法保存导致的,他获取不到肯定报错
要解决这个问题作者把他放在了第五章内容,后续处理可以转到看5.1内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。