当前位置:   article > 正文

4.2使用selenium测试用户交互--功能测试编写-selenium查找网页内容的方法+输入框中输入内容的方法+测试驱动首页模板生成_selenium 4.2

selenium 4.2

我的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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

代码解读:
我就不自己解释这些方法怎么用了
以下解释来自代码中的注释,我用词典翻译了一下,心得体会一些方法去看别人如何解释不如先去底层源码看看
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内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/628341
推荐阅读
相关标签
  

闽ICP备14008679号