import json
import subprocess
from functools import partial
from os import path
import time
from percy import percySnapshot
from selenium.webdriver import Chrome
import pywebio
from pywebio import start_server
from pywebio.input import *
from pywebio.output import *
proj_dir = path.dirname(path.dirname(path.abspath(__file__)))
def basic():
set_auto_scroll_bottom(False)
set_anchor('top')
for i in range(3):
put_text('text_%s' % i)
put_text('测试空格:20空格:[%s]结束' % (' ' * 20))
for i in range(3):
put_text('inline_text_%s' % i, inline=True)
put_markdown("""### put_markdown 测试
`行内代码`
无序列表:
- 北京
- 上海
- 天津
有序列表:
1. 北京
2. 上海
3. 天津
[链接](./#)
~~删除线~~
""", strip_indent=4, anchor='put_markdown')
put_text('put_html("
")')
put_html("
", anchor='put_html')
put_code(json.dumps(dict(name='pywebio', author='wangweimin'), indent=4), 'json', anchor='put_code')
put_table([
['Name', 'Gender', 'Address'],
['Wang', 'M', 'China'],
['Liu', 'W', 'America'],
])
put_table([
['Wang', 'M', 'China'],
['Liu', 'W', 'America'],
], header=['Name', 'Gender', 'Address'])
put_table([
{"Course": "OS", "Score": "80"},
{"Course": "DB", "Score": "93"},
], header=["Course", "Score"], anchor='put_table')
def edit_row(choice, row):
put_text("You click %s button at row %s" % (choice, row), after='table_cell_buttons')
put_table([
['Idx', 'Actions'],
['1', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=1))],
['2', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=2))],
['3', table_cell_buttons(['edit', 'delete'], onclick=partial(edit_row, row=3))],
], anchor='table_cell_buttons')
put_buttons(['A', 'B', 'C'], onclick=partial(put_text, after='put_buttons'), anchor='put_buttons')
put_image(open(proj_dir + "/docs/assets/input_1.png", 'rb').read(), anchor='put_image')
put_file('hello_word.txt', b'hello word!', anchor='put_file')
put_markdown('### 锚点')
put_text('anchor A1', anchor='A1')
put_text('new anchor A1', anchor='A1')
put_text('anchor A2', anchor='A2')
put_text('anchor A3', anchor='A3')
put_text('after=A1', after='A1')
put_text('after=A2', after='A2')
put_text('before=A1', before='A1')
put_text('before=A3', before='A3')
put_text('after=A3', after='A3')
clear_range('A1', "A2")
clear_range('A3', 'A2')
clear_after('A3')
put_text('before=top', before='top')
clear_before('top')
put_text('before=top again', before='top')
put_text('to remove', anchor='to_remove')
remove('to_remove')
hold()
def start_test_server():
pywebio.enable_debug()
start_server(basic, port=8080, debug=True, auto_open_webbrowser=False)
def test(server_proc: subprocess.Popen, browser: Chrome):
btns = browser.find_elements_by_css_selector('#pywebio-anchor-put_buttons button')
for btn in btns:
btn.click()
tab_btns = browser.find_elements_by_css_selector('#pywebio-anchor-table_cell_buttons button')
for btn in tab_btns:
btn.click()
time.sleep(1)
percySnapshot(browser=browser, name='basic output')
if __name__ == '__main__':
import util
util.run_test(start_test_server, test)