test_events.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import asyncio
  2. from selenium.webdriver.common.by import By
  3. from nicegui import ui
  4. from .screen import Screen
  5. def test_event_with_update_before_await(screen: Screen):
  6. @ui.page('/')
  7. def page():
  8. async def update():
  9. ui.label('1')
  10. await asyncio.sleep(1.0)
  11. ui.label('2')
  12. ui.button('update', on_click=update)
  13. screen.open('/')
  14. screen.click('update')
  15. screen.wait_for('1')
  16. screen.should_not_contain('2')
  17. screen.wait_for('2')
  18. def test_event_modifiers(screen: Screen):
  19. events = []
  20. ui.input('A').on('keydown', lambda _: events.append('A'))
  21. ui.input('B').on('keydown.x', lambda _: events.append('B'))
  22. ui.input('C').on('keydown.once', lambda _: events.append('C'))
  23. ui.input('D').on('keydown.shift.x', lambda _: events.append('D'))
  24. screen.open('/')
  25. screen.selenium.find_element(By.XPATH, '//*[@aria-label="A"]').send_keys('x')
  26. screen.selenium.find_element(By.XPATH, '//*[@aria-label="B"]').send_keys('xy')
  27. screen.selenium.find_element(By.XPATH, '//*[@aria-label="C"]').send_keys('xx')
  28. screen.selenium.find_element(By.XPATH, '//*[@aria-label="D"]').send_keys('Xx')
  29. assert events == ['A', 'B', 'C', 'D']