编写表单发送请求 - yann学长的运维开发指南27

in #devops8 years ago

说明

目前的进度及后续的课程
http://www.iamyann.com/images/0426/20180426144747.png
(html comment removed: more)

介绍

延续上节的内容,这次来实践一下.主要内容是修改模板,及解决跨站问题.

今天的具体内容如下:

  • 更新模板
  • 奇怪的失败
  • 稍微作弊一下
  • 问题解决

更新模板

vi  lists/templates/home.html
  <h1>Your To-Do list</h1>
  <form method="POST">
      <input name="item_text" id="id_new_item" placeholder="Enter a to-do item" />
  </form>

  <table id="id_list_table">
python functional_tests.py

为表单添加POST方法并测试

奇怪的失败

测试失败,报错如下

[...]
Traceback (most recent call last):
  File "functional_tests.py", line 40, in
test_can_start_a_list_and_retrieve_it_later
    table = self.browser.find_element_by_id('id_list_table')
[...]
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate
element: [id="id_list_table"]

这个比较麻烦,没有明显的调试信息,说找不到的元素,其实也是有的

稍微作弊一下

vi functional_tests.py
    inputbox.send_keys(Keys.ENTER)
    time.sleep(10)

    table = self.browser.find_element_by_id('id_list_table')

给操作的加一个休眠时间,在这个时间窗里,使用浏览器查看网页

问题解决

作弊还是有效的,页面显示大大的403,并且说明有CSRF验证失败,跨域了呢
说明放在后面,先写下修正代码

vi  lists/templates/home.html
<form method="POST">
    <input name="item_text" id="id_new_item" placeholder="Enter a to-do item" />
    {% csrf_token %}
</form>
python functional_tests.py

报错消失

预告

今天的内容其实不完整,可以等下一篇一起看.本来打算一起做出来的,但是因为篇幅原因放弃了.

上次是一小步,这次也是一小步,但是走一步算一步,只要坚持不倒退,总会到达目标的.

http://hero.iamyann.com/blog_webchat.jpg