4.2使用selenium测试用户交互--功能测试编写-selenium查找网页内容的方法+输入框中输入内容的方法

待办事项应用的功能测试编写
用讲故事的方法编写功能测试

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
4.2使用selenium测试用户交互--功能测试编写-selenium查找网页内容的方法+输入框中输入内容的方法