1.basic_output.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import json
  2. import subprocess
  3. from functools import partial
  4. from os import path
  5. import time
  6. from percy import percySnapshot
  7. from selenium.webdriver import Chrome
  8. import pywebio
  9. from pywebio import start_server
  10. from pywebio.output import *
  11. from pywebio.session import *
  12. proj_dir = path.dirname(path.dirname(path.abspath(__file__)))
  13. def basic():
  14. set_auto_scroll_bottom(False)
  15. set_anchor('top')
  16. for i in range(3):
  17. put_text('text_%s' % i)
  18. put_text('测试空格:20空格:[%s]结束' % (' ' * 20))
  19. for i in range(3):
  20. put_text('inline_text_%s' % i, inline=True)
  21. put_markdown("""### put_markdown 测试
  22. `行内代码`
  23. 无序列表:
  24. - 北京
  25. - 上海
  26. - 天津
  27. 有序列表:
  28. 1. 北京
  29. 2. 上海
  30. 3. 天津
  31. [链接](./#)
  32. ~~删除线~~
  33. """, strip_indent=4, anchor='put_markdown')
  34. put_text('put_html("<hr/>")')
  35. put_html("<hr/>", anchor='put_html')
  36. put_code(json.dumps(dict(name='pywebio', author='wangweimin'), indent=4), 'json', anchor='put_code')
  37. put_table([
  38. ['Name', 'Gender', 'Address'],
  39. ['Wang', 'M', 'China'],
  40. ['Liu', 'W', 'America'],
  41. ])
  42. put_table([
  43. ['Wang', 'M', 'China'],
  44. ['Liu', 'W', 'America'],
  45. ], header=['Name', 'Gender', 'Address'])
  46. put_table([
  47. {"Course": "OS", "Score": "80"},
  48. {"Course": "DB", "Score": "93"},
  49. ], header=["Course", "Score"], anchor='put_table')
  50. def edit_row(choice, row):
  51. put_text("You click %s button at row %s" % (choice, row), after='table_cell_buttons')
  52. put_table([
  53. ['Idx', 'Actions'],
  54. ['1', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=1))],
  55. ['2', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=2))],
  56. ['3', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=3))],
  57. ], anchor='table_cell_buttons')
  58. put_buttons(['A', 'B', 'C'], onclick=partial(put_text, after='put_buttons'), anchor='put_buttons')
  59. put_image(open(proj_dir + "/docs/assets/input_1.png", 'rb').read(), anchor='put_image')
  60. put_file('hello_word.txt', b'hello word!', anchor='put_file')
  61. put_markdown('### 锚点')
  62. put_text('anchor A1', anchor='A1')
  63. put_text('new anchor A1', anchor='A1')
  64. put_text('anchor A2', anchor='A2')
  65. put_text('anchor A3', anchor='A3')
  66. put_text('after=A1', after='A1')
  67. put_text('after=A2', after='A2')
  68. put_text('before=A1', before='A1')
  69. put_text('before=A3', before='A3')
  70. put_text('after=A3', after='A3')
  71. clear_range('A1', "A2")
  72. clear_range('A3', 'A2')
  73. clear_after('A3')
  74. put_text('before=top', before='top')
  75. clear_before('top')
  76. put_text('before=top again', before='top')
  77. put_text('to remove', anchor='to_remove')
  78. remove('to_remove')
  79. hold()
  80. def start_test_server():
  81. pywebio.enable_debug()
  82. start_server(basic, port=8080, debug=True, auto_open_webbrowser=False)
  83. def test(server_proc: subprocess.Popen, browser: Chrome):
  84. btns = browser.find_elements_by_css_selector('#pywebio-anchor-put_buttons button')
  85. for btn in btns:
  86. btn.click()
  87. tab_btns = browser.find_elements_by_css_selector('#pywebio-anchor-table_cell_buttons button')
  88. for btn in tab_btns:
  89. btn.click()
  90. time.sleep(1)
  91. percySnapshot(browser=browser, name='basic output')
  92. if __name__ == '__main__':
  93. import util
  94. util.run_test(start_test_server, test)